• 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.14
  • 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 
602  KExiv2::MetaDataMap getExifTagsDataList(const QStringList& exifKeysFilter=QStringList(), bool invertSelection=false) const;
603 
605 
606  //-------------------------------------------------------------
608 
609 
612  KExiv2::TagsMap getIptcTagsList() const;
613 
616  static bool canWriteIptc(const QString& filePath);
617 
620  bool hasIptc() const;
621 
624  bool clearIptc() const;
625 
630  QByteArray getIptc(bool addIrbHeader=false) const;
631 
635  bool setIptc(const QByteArray& data) const;
636 
640  QString getIptcTagString(const char* iptcTagName, bool escapeCR=true) const;
641 
644  bool setIptcTagString(const char* iptcTagName, const QString& value, bool setProgramName=true) const;
645 
653  QStringList getIptcTagsStringList(const char* iptcTagName, bool escapeCR=true) const;
654 
658  bool setIptcTagsStringList(const char* iptcTagName, int maxSize,
659  const QStringList& oldValues, const QStringList& newValues,
660  bool setProgramName=true) const;
661 
665  QByteArray getIptcTagData(const char* iptcTagName) const;
666 
669  bool setIptcTagData(const char* iptcTagName, const QByteArray& data, bool setProgramName=true) const;
670 
674  bool removeIptcTag(const char* iptcTagName, bool setProgramName=true) const;
675 
678  QString getIptcTagTitle(const char* iptcTagName);
679 
682  QString getIptcTagDescription(const char* iptcTagName);
683 
702  KExiv2::MetaDataMap getIptcTagsDataList(const QStringList& iptcKeysFilter=QStringList(), bool invertSelection=false) const;
703 
706  QStringList getIptcKeywords() const;
707 
713  bool setIptcKeywords(const QStringList& oldKeywords, const QStringList& newKeywords,
714  bool setProgramName=true) const;
715 
718  QStringList getIptcSubjects() const;
719 
725  bool setIptcSubjects(const QStringList& oldSubjects, const QStringList& newSubjects,
726  bool setProgramName=true) const;
727 
731  QStringList getIptcSubCategories() const;
732 
738  bool setIptcSubCategories(const QStringList& oldSubCategories, const QStringList& newSubCategories,
739  bool setProgramName=true) const;
740 
742 
743  //------------------------------------------------------------
745 
746 
749  KExiv2::TagsMap getXmpTagsList() const;
750 
753  static bool canWriteXmp(const QString& filePath);
754 
757  bool hasXmp() const;
758 
761  bool clearXmp() const;
762 
766  QByteArray getXmp() const;
767 
771  bool setXmp(const QByteArray& data) const;
772 
776  QString getXmpTagString(const char* xmpTagName, bool escapeCR=true) const;
777 
780  bool setXmpTagString(const char* xmpTagName, const QString& value,
781  bool setProgramName=true) const;
782 
787  bool setXmpTagString(const char* xmpTagName, const QString& value,
788  XmpTagType type,bool setProgramName=true) const;
789 
792  QString getXmpTagTitle(const char* xmpTagName);
793 
796  QString getXmpTagDescription(const char* xmpTagName);
797 
816  KExiv2::MetaDataMap getXmpTagsDataList(const QStringList& xmpKeysFilter=QStringList(), bool invertSelection=false) const;
817 
823  KExiv2::AltLangMap getXmpTagStringListLangAlt(const char* xmpTagName, bool escapeCR=true) const;
824 
829  bool setXmpTagStringListLangAlt(const char* xmpTagName, const KExiv2::AltLangMap& values,
830  bool setProgramName) const;
831 
837  QString getXmpTagStringLangAlt(const char* xmpTagName, const QString& langAlt, bool escapeCR) const;
838 
844  bool setXmpTagStringLangAlt(const char* xmpTagName, const QString& value,
845  const QString& langAlt, bool setProgramName=true) const;
846 
850  QStringList getXmpTagStringSeq(const char* xmpTagName, bool escapeCR=true) const;
851 
855  bool setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq,
856  bool setProgramName=true) const;
857 
861  QStringList getXmpTagStringBag(const char* xmpTagName, bool escapeCR) const;
862 
866  bool setXmpTagStringBag(const char* xmpTagName, const QStringList& bag,
867  bool setProgramName=true) const;
868 
874  bool addToXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToAdd,
875  bool setProgramName) const;
876 
881  bool removeFromXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToRemove,
882  bool setProgramName) const;
883 
894  QVariant getXmpTagVariant(const char* xmpTagName, bool rationalAsListOfInts=true, bool stringEscapeCR=true) const;
895 
898  QStringList getXmpKeywords() const;
899 
905  bool setXmpKeywords(const QStringList& newKeywords, bool setProgramName=true) const;
906 
910  bool removeXmpKeywords(const QStringList& keywordsToRemove, bool setProgramName=true);
911 
914  QStringList getXmpSubjects() const;
915 
921  bool setXmpSubjects(const QStringList& newSubjects, bool setProgramName=true) const;
922 
926  bool removeXmpSubjects(const QStringList& subjectsToRemove, bool setProgramName=true);
927 
931  QStringList getXmpSubCategories() const;
932 
938  bool setXmpSubCategories(const QStringList& newSubCategories, bool setProgramName=true) const;
939 
943  bool removeXmpSubCategories(const QStringList& categoriesToRemove, bool setProgramName=true);
944 
948  bool removeXmpTag(const char* xmpTagName, bool setProgramName=true) const;
949 
950 
957  static bool registerXmpNameSpace(const QString& uri, const QString& prefix);
958 
960  static bool unregisterXmpNameSpace(const QString& uri);
961 
963 
964  //------------------------------------------------------------
966 
967 
970  bool initializeGPSInfo(const bool setProgramName);
971 
974  bool getGPSInfo(double& altitude, double& latitude, double& longitude) const;
975 
979  QString getGPSLatitudeString() const;
980  QString getGPSLongitudeString() const;
981 
986  bool getGPSLatitudeNumber(double* const latitude) const;
987  bool getGPSLongitudeNumber(double* const longitude) const;
988 
991  bool getGPSAltitude(double* const altitude) const;
992 
996  bool setGPSInfo(const double altitude, const double latitude, const double longitude, const bool setProgramName=true);
997 
1001  bool setGPSInfo(const double* const altitude, const double latitude, const double longitude, const bool setProgramName=true);
1002 
1006  bool setGPSInfo(const double altitude, const QString &latitude, const QString &longitude, const bool setProgramName=true);
1007 
1011  bool removeGPSInfo(const bool setProgramName=true);
1012 
1018  static void convertToRational(const double number, long int* const numerator,
1019  long int* const denominator, const int rounding);
1020 
1028  static void convertToRationalSmallDenominator(const double number, long int* const numerator,
1029  long int* const denominator);
1030 
1034  static QString convertToGPSCoordinateString(const long int numeratorDegrees, const long int denominatorDegrees,
1035  const long int numeratorMinutes, const long int denominatorMinutes,
1036  const long int numeratorSeconds, long int denominatorSeconds,
1037  const char directionReference);
1038 
1042  static QString convertToGPSCoordinateString(const bool isLatitude, double coordinate);
1043 
1048  static bool convertFromGPSCoordinateString(const QString& coordinate,
1049  long int* const numeratorDegrees, long int* const denominatorDegrees,
1050  long int* const numeratorMinutes, long int* const denominatorMinutes,
1051  long int* const numeratorSeconds, long int* const denominatorSeconds,
1052  char* const directionReference);
1053 
1058  static bool convertFromGPSCoordinateString(const QString& gpsString, double* const coordinate);
1059 
1063  static bool convertToUserPresentableNumbers(const QString& coordinate,
1064  int* const degrees, int* const minutes,
1065  double* const seconds, char* const directionReference);
1066 
1072  static void convertToUserPresentableNumbers(const bool isLatitude, double coordinate,
1073  int* const degrees, int* const minutes,
1074  double* const seconds, char* const directionReference);
1075 
1077 
1078 protected:
1079 
1095  virtual bool setProgramId(bool on=true) const;
1096 
1097 private:
1098 
1101  class Private;
1102  Private* const d;
1103 
1104  friend class KExiv2Previews;
1105 };
1106 
1107 } // NameSpace KExiv2Iface
1108 
1109 #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
QByteArray
KExiv2Iface::KExiv2Previews
Definition: kexiv2previews.h:46
QMap< QString, QString >
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
QString
QStringList
KExiv2Iface::KExiv2::Private
Definition: kexiv2_p.h:140
QSize
QImage
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
QDateTime
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:19:39 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