• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegraphics API Reference
  • KDE Home
  • Contact Us
 

libs/libkexiv2/libkexiv2

  • sources
  • kde-4.12
  • kdegraphics
  • libs
  • libkexiv2
  • libkexiv2
kexiv2.h
Go to the documentation of this file.
1 
34 #ifndef KEXIV2_H
35 #define KEXIV2_H
36 
37 // QT includes
38 
39 #include <QtCore/QByteArray>
40 #include <QtCore/QString>
41 #include <QtCore/QDateTime>
42 #include <QtCore/QMap>
43 #include <QtCore/QSharedDataPointer>
44 #include <QtCore/QStringList>
45 #include <QtCore/QVariant>
46 #include <QtCore/QRegExp>
47 #include <QtGui/QImage>
48 
49 // KDE includes.
50 
51 #include <kurl.h>
52 
53 // Local includes
54 
55 #include "libkexiv2_export.h"
56 #include "kexiv2data.h"
57 
58 namespace KExiv2Iface
59 {
60 
61 class KEXIV2_EXPORT KExiv2
62 {
63 
64 public:
65 
69  enum MetadataWritingMode
70  {
72  WRITETOIMAGEONLY = 0,
73 
75  WRITETOSIDECARONLY = 1,
76 
78  WRITETOSIDECARANDIMAGE = 2,
79 
81  WRITETOSIDECARONLY4READONLYFILES = 3
82  };
83 
86  enum ImageColorWorkSpace
87  {
88  WORKSPACE_UNSPECIFIED = 0,
89  WORKSPACE_SRGB = 1,
90  WORKSPACE_ADOBERGB = 2,
91  WORKSPACE_UNCALIBRATED = 65535
92  };
93 
96  enum ImageOrientation
97  {
98  ORIENTATION_UNSPECIFIED = 0,
99  ORIENTATION_NORMAL = 1,
100  ORIENTATION_HFLIP = 2,
101  ORIENTATION_ROT_180 = 3,
102  ORIENTATION_VFLIP = 4,
103  ORIENTATION_ROT_90_HFLIP = 5,
104  ORIENTATION_ROT_90 = 6,
105  ORIENTATION_ROT_90_VFLIP = 7,
106  ORIENTATION_ROT_270 = 8
107  };
108 
112  enum XmpTagType
113  {
114  NormalTag = 0,
115  ArrayBagTag = 1,
116  StructureTag = 2,
117  ArrayLangTag = 3,
118  ArraySeqTag = 4
119  };
120 
123  typedef QMap<QString, QString> MetaDataMap;
124 
129  typedef QMap<QString, QString> AltLangMap;
130 
136  typedef QMap<QString, QStringList> TagsMap;
137 
138 public:
139 
142  KExiv2();
143 
146  KExiv2(const KExiv2& metadata);
147 
150  KExiv2(const KExiv2Data& data);
151 
154  KExiv2(const QString& filePath);
155 
158  virtual ~KExiv2();
159 
162  KExiv2& operator=(const KExiv2& metadata);
163 
164 public:
165 
166  //-----------------------------------------------------------------
168 
169 
175  static bool initializeExiv2();
176 
182  static bool cleanupExiv2();
183 
186  static bool supportXmp();
187 
190  static bool supportMetadataWritting(const QString& typeMime);
191 
194  static QString Exiv2Version();
195 
198  static QString version();
199 
203  static QString sidecarFilePathForFile(const QString& path);
204 
207  static QString sidecarPath(const QString& path);
208 
211  static KUrl sidecarUrl(const KUrl& url);
212 
215  static KUrl sidecarUrl(const QString& path);
216 
219  static bool hasSidecar(const QString& path);
220 
222 
223  //-----------------------------------------------------------------
225 
226 
227  KExiv2Data data() const;
228  void setData(const KExiv2Data& data);
229 
233  bool loadFromData(const QByteArray& imgData) const;
234 
238  virtual bool load(const QString& filePath) const;
239 
243  bool save(const QString& filePath) const;
244 
248  bool applyChanges() const;
249 
252  bool isEmpty() const;
253 
256  void setFilePath(const QString& path);
257 
260  QString getFilePath() const;
261 
271  QSize getPixelSize() const;
272 
276  QString getMimeType() const;
277 
281  void setWriteRawFiles(const bool on);
282 
286  bool writeRawFiles() const;
287 
290  void setUseXMPSidecar4Reading(const bool on);
291 
294  bool useXMPSidecar4Reading() const;
295 
300  void setMetadataWritingMode(const int mode);
301 
306  int metadataWritingMode() const;
307 
311  void setUpdateFileTimeStamp(bool on);
312 
315  bool updateFileTimeStamp() const;
316 
318 
319  //-------------------------------------------------------------------
321 
322 
326  bool setImageProgramId(const QString& program, const QString& version) const;
327 
331  QSize getImageDimensions() const;
332 
336  bool setImageDimensions(const QSize& size, bool setProgramName=true) const;
337 
341  KExiv2::ImageOrientation getImageOrientation() const;
342 
346  bool setImageOrientation(ImageOrientation orientation, bool setProgramName=true) const;
347 
351  KExiv2::ImageColorWorkSpace getImageColorWorkSpace() const;
352 
356  bool setImageColorWorkSpace(ImageColorWorkSpace workspace, bool setProgramName=true) const;
357 
361  QDateTime getImageDateTime() const;
362 
366  bool setImageDateTime(const QDateTime& dateTime, bool setDateTimeDigitized=false,
367  bool setProgramName=true) const;
368 
373  QDateTime getDigitizationDateTime(bool fallbackToCreationTime=false) const;
374 
378  bool getImagePreview(QImage& preview) const;
379 
386  virtual bool setImagePreview(const QImage& preview, bool setProgramName=true) const;
387 
389 
390  //-----------------------------------------------------------------
392 
393 
396  static bool canWriteComment(const QString& filePath);
397 
400  bool hasComments() const;
401 
404  bool clearComments() const;
405 
410  QByteArray getComments() const;
411 
416  QString getCommentsDecoded() const;
417 
421  bool setComments(const QByteArray& data) const;
422 
427  static QString detectLanguageAlt(const QString& value, QString& lang);
428 
430 
431  //-----------------------------------------------------------------
433 
434 
437  TagsMap getStdExifTagsList() const;
438 
441  TagsMap getMakernoteTagsList() const;
442 
445  static bool canWriteExif(const QString& filePath);
446 
449  bool hasExif() const;
450 
453  bool clearExif() const;
454 
462  QByteArray getExifEncoded(bool addExifHeader=false) const;
463 
467  bool setExif(const QByteArray& data) const;
468 
473  QImage getExifThumbnail(bool fixOrientation) const;
474 
478  bool rotateExifQImage(QImage& image, ImageOrientation orientation) const;
479 
483  bool setExifThumbnail(const QImage& thumb, bool setProgramName=true) const;
484 
486  bool removeExifThumbnail() const;
487 
489  bool setTiffThumbnail(const QImage& thumb, bool setProgramName=true) const;
490 
494  QString getExifComment() const;
495 
499  bool setExifComment(const QString& comment, bool setProgramName=true) const;
500 
504  QString getExifTagString(const char* exifTagName, bool escapeCR=true) const;
505 
508  bool setExifTagString(const char* exifTagName, const QString& value, bool setProgramName=true) const;
509 
512  bool getExifTagLong(const char* exifTagName, long &val) const;
513 
516  bool getExifTagLong(const char* exifTagName, long &val, int component) const;
517 
520  bool setExifTagLong(const char* exifTagName, long val, bool setProgramName=true) const;
521 
526  bool getExifTagRational(const char* exifTagName, long int& num, long int& den, int component=0) const;
527 
532  bool setExifTagRational(const char* exifTagName, long int num, long int den, bool setProgramName=true) const;
533 
537  QByteArray getExifTagData(const char* exifTagName) const;
538 
541  bool setExifTagData(const char* exifTagName, const QByteArray& data, bool setProgramName=true) const;
542 
551  QVariant getExifTagVariant(const char* exifTagName, bool rationalAsListOfInts=true, bool escapeCR=true, int component=0) const;
552 
559  bool setExifTagVariant(const char* exifTagName, const QVariant& data,
560  bool rationalWantSmallDenominator=true, bool setProgramName=true) const;
561 
565  bool removeExifTag(const char* exifTagName, bool setProgramName=true) const;
566 
569  QString getExifTagTitle(const char* exifTagName);
570 
573  QString getExifTagDescription(const char* exifTagName);
574 
580  QString createExifUserStringFromValue(const char* exifTagName, const QVariant& val, bool escapeCR=true);
581 
600  KExiv2::MetaDataMap getExifTagsDataList(const QStringList& exifKeysFilter, bool invertSelection=false) const;
601 
603 
604  //-------------------------------------------------------------
606 
607 
610  KExiv2::TagsMap getIptcTagsList() const;
611 
614  static bool canWriteIptc(const QString& filePath);
615 
618  bool hasIptc() const;
619 
622  bool clearIptc() const;
623 
628  QByteArray getIptc(bool addIrbHeader=false) const;
629 
633  bool setIptc(const QByteArray& data) const;
634 
638  QString getIptcTagString(const char* iptcTagName, bool escapeCR=true) const;
639 
642  bool setIptcTagString(const char* iptcTagName, const QString& value, bool setProgramName=true) const;
643 
651  QStringList getIptcTagsStringList(const char* iptcTagName, bool escapeCR=true) const;
652 
656  bool setIptcTagsStringList(const char* iptcTagName, int maxSize,
657  const QStringList& oldValues, const QStringList& newValues,
658  bool setProgramName=true) const;
659 
663  QByteArray getIptcTagData(const char* iptcTagName) const;
664 
667  bool setIptcTagData(const char* iptcTagName, const QByteArray& data, bool setProgramName=true) const;
668 
672  bool removeIptcTag(const char* iptcTagName, bool setProgramName=true) const;
673 
676  QString getIptcTagTitle(const char* iptcTagName);
677 
680  QString getIptcTagDescription(const char* iptcTagName);
681 
698  KExiv2::MetaDataMap getIptcTagsDataList(const QStringList& iptcKeysFilter, bool invertSelection=false) const;
699 
702  QStringList getIptcKeywords() const;
703 
709  bool setIptcKeywords(const QStringList& oldKeywords, const QStringList& newKeywords,
710  bool setProgramName=true) const;
711 
714  QStringList getIptcSubjects() const;
715 
721  bool setIptcSubjects(const QStringList& oldSubjects, const QStringList& newSubjects,
722  bool setProgramName=true) const;
723 
727  QStringList getIptcSubCategories() const;
728 
734  bool setIptcSubCategories(const QStringList& oldSubCategories, const QStringList& newSubCategories,
735  bool setProgramName=true) const;
736 
738 
739  //------------------------------------------------------------
741 
742 
745  KExiv2::TagsMap getXmpTagsList() const;
746 
749  static bool canWriteXmp(const QString& filePath);
750 
753  bool hasXmp() const;
754 
757  bool clearXmp() const;
758 
762  QByteArray getXmp() const;
763 
767  bool setXmp(const QByteArray& data) const;
768 
772  QString getXmpTagString(const char* xmpTagName, bool escapeCR=true) const;
773 
776  bool setXmpTagString(const char* xmpTagName, const QString& value,
777  bool setProgramName=true) const;
778 
783  bool setXmpTagString(const char* xmpTagName, const QString& value,
784  XmpTagType type,bool setProgramName=true) const;
785 
788  QString getXmpTagTitle(const char* xmpTagName);
789 
792  QString getXmpTagDescription(const char* xmpTagName);
793 
810  KExiv2::MetaDataMap getXmpTagsDataList(const QStringList& xmpKeysFilter, bool invertSelection=false) const;
811 
817  KExiv2::AltLangMap getXmpTagStringListLangAlt(const char* xmpTagName, bool escapeCR=true) const;
818 
823  bool setXmpTagStringListLangAlt(const char* xmpTagName, const KExiv2::AltLangMap& values,
824  bool setProgramName) const;
825 
831  QString getXmpTagStringLangAlt(const char* xmpTagName, const QString& langAlt, bool escapeCR) const;
832 
838  bool setXmpTagStringLangAlt(const char* xmpTagName, const QString& value,
839  const QString& langAlt, bool setProgramName=true) const;
840 
844  QStringList getXmpTagStringSeq(const char* xmpTagName, bool escapeCR=true) const;
845 
849  bool setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq,
850  bool setProgramName=true) const;
851 
855  QStringList getXmpTagStringBag(const char* xmpTagName, bool escapeCR) const;
856 
860  bool setXmpTagStringBag(const char* xmpTagName, const QStringList& bag,
861  bool setProgramName=true) const;
862 
868  bool addToXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToAdd,
869  bool setProgramName) const;
870 
875  bool removeFromXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToRemove,
876  bool setProgramName) const;
877 
888  QVariant getXmpTagVariant(const char* xmpTagName, bool rationalAsListOfInts=true, bool stringEscapeCR=true) const;
889 
892  QStringList getXmpKeywords() const;
893 
899  bool setXmpKeywords(const QStringList& newKeywords, bool setProgramName=true) const;
900 
904  bool removeXmpKeywords(const QStringList& keywordsToRemove, bool setProgramName=true);
905 
908  QStringList getXmpSubjects() const;
909 
915  bool setXmpSubjects(const QStringList& newSubjects, bool setProgramName=true) const;
916 
920  bool removeXmpSubjects(const QStringList& subjectsToRemove, bool setProgramName=true);
921 
925  QStringList getXmpSubCategories() const;
926 
932  bool setXmpSubCategories(const QStringList& newSubCategories, bool setProgramName=true) const;
933 
937  bool removeXmpSubCategories(const QStringList& categoriesToRemove, bool setProgramName=true);
938 
942  bool removeXmpTag(const char* xmpTagName, bool setProgramName=true) const;
943 
944 
951  static bool registerXmpNameSpace(const QString& uri, const QString& prefix);
952 
954  static bool unregisterXmpNameSpace(const QString& uri);
955 
957 
958  //------------------------------------------------------------
960 
961 
964  bool initializeGPSInfo(const bool setProgramName);
965 
968  bool getGPSInfo(double& altitude, double& latitude, double& longitude) const;
969 
973  QString getGPSLatitudeString() const;
974  QString getGPSLongitudeString() const;
975 
980  bool getGPSLatitudeNumber(double* const latitude) const;
981  bool getGPSLongitudeNumber(double* const longitude) const;
982 
985  bool getGPSAltitude(double* const altitude) const;
986 
990  bool setGPSInfo(const double altitude, const double latitude, const double longitude, const bool setProgramName=true);
991 
995  bool setGPSInfo(const double* const altitude, const double latitude, const double longitude, const bool setProgramName=true);
996 
1000  bool setGPSInfo(const double altitude, const QString &latitude, const QString &longitude, const bool setProgramName=true);
1001 
1005  bool removeGPSInfo(const bool setProgramName=true);
1006 
1012  static void convertToRational(const double number, long int* const numerator,
1013  long int* const denominator, const int rounding);
1014 
1022  static void convertToRationalSmallDenominator(const double number, long int* const numerator,
1023  long int* const denominator);
1024 
1028  static QString convertToGPSCoordinateString(const long int numeratorDegrees, const long int denominatorDegrees,
1029  const long int numeratorMinutes, const long int denominatorMinutes,
1030  const long int numeratorSeconds, long int denominatorSeconds,
1031  const char directionReference);
1032 
1036  static QString convertToGPSCoordinateString(const bool isLatitude, double coordinate);
1037 
1042  static bool convertFromGPSCoordinateString(const QString& coordinate,
1043  long int* const numeratorDegrees, long int* const denominatorDegrees,
1044  long int* const numeratorMinutes, long int* const denominatorMinutes,
1045  long int* const numeratorSeconds, long int* const denominatorSeconds,
1046  char* const directionReference);
1047 
1052  static bool convertFromGPSCoordinateString(const QString& gpsString, double* const coordinate);
1053 
1057  static bool convertToUserPresentableNumbers(const QString& coordinate,
1058  int* const degrees, int* const minutes,
1059  double* const seconds, char* const directionReference);
1060 
1066  static void convertToUserPresentableNumbers(const bool isLatitude, double coordinate,
1067  int* const degrees, int* const minutes,
1068  double* const seconds, char* const directionReference);
1069 
1071 
1072 protected:
1073 
1089  virtual bool setProgramId(bool on=true) const;
1090 
1091 private:
1092 
1095  class Private;
1096  Private* const d;
1097 
1098  friend class KExiv2Previews;
1099 };
1100 
1101 } // NameSpace KExiv2Iface
1102 
1103 #endif /* KEXIV2_H */
kexiv2data.h
===========================================================This file is a part of digiKam project htt...
KExiv2Iface::KExiv2::AltLangMap
QMap< QString, QString > AltLangMap
A map used to store a list of Alternative Language values.
Definition: kexiv2.h:129
KExiv2Iface::KExiv2::ImageColorWorkSpace
ImageColorWorkSpace
The image color workspace values given by Exif metadata.
Definition: kexiv2.h:86
KExiv2Iface::KExiv2Previews
Definition: kexiv2previews.h:46
KExiv2Iface::KExiv2::ImageOrientation
ImageOrientation
The image orientation values given by Exif metadata.
Definition: kexiv2.h:96
KExiv2Iface::KExiv2::XmpTagType
XmpTagType
Xmp tag types, used by setXmpTag, only first three types are used.
Definition: kexiv2.h:112
KEXIV2_EXPORT
#define KEXIV2_EXPORT
Definition: libkexiv2_export.h:39
KExiv2Iface::KExiv2
Definition: kexiv2.h:61
KExiv2Iface::KExiv2::MetaDataMap
QMap< QString, QString > MetaDataMap
A map used to store Tags Key and Tags Value.
Definition: kexiv2.h:123
KExiv2Iface::KExiv2Data
Definition: kexiv2data.h:42
KExiv2Iface::KExiv2::Private
Definition: kexiv2_p.h:140
KExiv2Iface::KExiv2::TagsMap
QMap< QString, QStringList > TagsMap
A map used to store Tags Key and a list of Tags properties :
Definition: kexiv2.h:136
libkexiv2_export.h
===========================================================This file is part of the KDE project ...
KExiv2Iface::KExiv2::MetadataWritingMode
MetadataWritingMode
The image metadata writing mode, between image file metadata and XMP sidecar file, depending on the context.
Definition: kexiv2.h:69
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:45:19 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libs/libkexiv2/libkexiv2

Skip menu "libs/libkexiv2/libkexiv2"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdegraphics API Reference

Skip menu "kdegraphics API Reference"
  •     libkdcraw
  •     libkexiv2
  •     libkipi
  •     libksane
  • okular

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal