1 | /* |
2 | This file is part of KFileMetaData |
3 | SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.1-or-later |
6 | */ |
7 | |
8 | #ifndef KFILEMETADATA_PROPERTIES |
9 | #define KFILEMETADATA_PROPERTIES |
10 | |
11 | #include "kfilemetadata_export.h" |
12 | |
13 | #include <QMap> |
14 | #include <QVariant> |
15 | |
16 | namespace KFileMetaData { |
17 | |
18 | /*! |
19 | * \namespace KFileMetaData::Property |
20 | * \inmodule KFileMetaData |
21 | * \brief The Property namespace. |
22 | */ |
23 | namespace Property { |
24 | |
25 | /*! |
26 | * The Property enum contains all files property types that KFileMetaData manipulates |
27 | * |
28 | * \value Empty |
29 | * \value BitRate The Bit Rate of the Audio in the file. Represented as an integer in kbit/sec |
30 | * \value Channels The number of channels of the Audio in the file. Represented as an integer |
31 | * \value Duration The duration of the media in the file. Represented as an integer in seconds |
32 | * \value Genre The Genre of an Audio file. This is represented as a string of genres and not integers. The IDv1 standard provides a list of commonly excepted genres. |
33 | * \value SampleRate The sample rate or frequency of the Audio in the file. This is represented as an integer in Hz. So a file with "44.1KHz" will have a frequency of 44100 |
34 | * \value TrackNumber Represents the track number in a set. Typically maps to the "TRCK" tag in IDv3 |
35 | * \value ReleaseYear Indicates the year a track was released. Represented as an integer. Typically mapped to the "TYE (Year)" tag in IDv1 |
36 | * \value Comment Represents a comment stored in the file. This can map to e.g. the "COMM" field from IDv3 |
37 | * \value Artist Represents the artist of a media file. This generally corresponds to the IDv1 ARTIST tag. Many extractors often split this string into a number of artists. |
38 | * \value Album Represents the album of a media file. This generally corresponds to the IDv1 ALBUM tag. |
39 | * \value AlbumArtist Represents the album artist of a media file. This generally corresponds to the IDv3 TPE2 ("Band/Orchestra/Accompaniment") tag. |
40 | * \value Composer Represents the Composer of a media file. This generally corresponds to the IDv2 COMPOSER tag |
41 | * \value Lyricist Represents the Lyricist of a media file. This generally corresponds to the IDv2 "Lyricist/text writer" tag |
42 | * \value Author The Author field indicated the primary creator of a document. This often corresponds directly to dc:creator |
43 | * \value Title Refers to the Title of the content of the file. This can represented by the IDv1 tag TT2 (Title/songname/content description) or the TITLE in a PDF file or the 'dc:title' tag in DublinCore |
44 | * \value Subject Refers to the subject of the file. This directly corresponds to the 'dc:subject' tag from DublinCore. |
45 | * \value Generator Refers to the Application used to create this file. In the ODF standard this maps to the 'meta:generator' tag. In PDFs its mapped to the "Producer" tag. |
46 | * \value PageCount The number of pages in a document |
47 | * \value WordCount The number of words in a document. This is often only provided for documents where the word count is available in the metadata |
48 | * \value LineCount The number of lines in a document. This is often only provided for documents where the line count is available in the metadata |
49 | * \value[since 5.50] Language The language the document is written in. This directly maps to the 'dc:language' tag from DublinCore. We do NOT employ any language detection schemes on the text |
50 | * \value Copyright The copyright of the file. Represented as a string |
51 | * \value Publisher The publisher of the content. Represented as a string |
52 | * \value CreationDate The date the content of the file was created. This is extracted from the file metadata and not from the file system. In ODF, it corresponds to "meta:creation-date", in PDF to the "CreationDate" tag, and otherwise the "dcterms:created" tag |
53 | * \value Keywords The keywords used to represent the document. This is mostly a string list of all the keywords |
54 | * \value Width Represents the width of the Media in pixels. This is generally only applicable for Images and Videos |
55 | * \value Height Represents the height of the Media in pixels. This is generally only applicable for Images and Videos |
56 | * \value AspectRatio The Aspect Ratio of the visual image or video. It is the width of a pixel divided by the height of the pixel |
57 | * \value FrameRate Number of frames per second |
58 | * \value[since 5.60] Manufacturer The manufacturer of the equipment used for generating the file and metadata. Typically maps to the 'Exif.Image.Make' tag |
59 | * \value[since 5.60] Model The model name of the equipment used for generating the file and metadata. Typically maps to the 'Exif.Image.Model' tag |
60 | * \value ImageDateTime |
61 | * \value ImageOrientation |
62 | * \value PhotoFlash |
63 | * \value PhotoPixelXDimension |
64 | * \value PhotoPixelYDimension |
65 | * \value PhotoDateTimeOriginal |
66 | * \value PhotoFocalLength |
67 | * \value PhotoFocalLengthIn35mmFilm |
68 | * \value PhotoExposureTime |
69 | * \value PhotoFNumber |
70 | * \value PhotoApertureValue |
71 | * \value PhotoExposureBiasValue |
72 | * \value PhotoWhiteBalance |
73 | * \value PhotoMeteringMode |
74 | * \value PhotoISOSpeedRatings |
75 | * \value PhotoSaturation |
76 | * \value PhotoSharpness |
77 | * \value PhotoGpsLatitude |
78 | * \value PhotoGpsLongitude |
79 | * \value PhotoGpsAltitude |
80 | * \value TranslationUnitsTotal |
81 | * \value TranslationUnitsWithTranslation |
82 | * \value TranslationUnitsWithDraftTranslation |
83 | * \value TranslationLastAuthor |
84 | * \value TranslationLastUpDate |
85 | * \value TranslationTemplateDate |
86 | * \value OriginUrl The URL this file has originally been downloaded from |
87 | * \value OriginEmailSubject The subject of the email this file was originally attached to |
88 | * \value OriginEmailSender The sender of the email this file was originally attached to |
89 | * \value OriginEmailMessageId The message ID of the email this file was originally attached to |
90 | * \value DiscNumber Represents the disc number in a multi-disc set. Typically maps to the "TPOS" tag for mp3 |
91 | * \value Location Represents the location where an audio file was recorded |
92 | * \value Performer Represents the (lead) performer of an audio file |
93 | * \value Ensemble Represents the ensemble of an audio file |
94 | * \value Arranger Represents the arranger of an audio file |
95 | * \value Conductor Represents the conductor of an audio file |
96 | * \value Opus Represents the opus of an audio file mostly used for classical music |
97 | * \value Label Represents the label of the content |
98 | * \value Compilation Contains the name of the compilation of an audio file |
99 | * \value License Contains the license information of the file |
100 | * \value Rating For ratings stored in Metadata tags |
101 | * \value Lyrics Contains the lyrics of a song embedded in the file |
102 | * \value ReplayGainAlbumPeak Contains ReplayGain information for audio files |
103 | * \value ReplayGainAlbumGain Contains ReplayGain information for audio files. The album gain is given in "dB" |
104 | * \value ReplayGainTrackPeak Contains ReplayGain information for audio files |
105 | * \value ReplayGainTrackGain Contains ReplayGain information for audio files. The track gain is given in "dB" |
106 | * \value Description Represents the description stored in the file. This maps to the 'dc:description' tag from DublinCore |
107 | * \value[since 6.13] VideoCodec A string description of the codec used |
108 | * \value[since 6.13] AudioCodec A string description of the codec used |
109 | * \value[since 6.13] PixelFormat The Pixel format used by the media (image or video) |
110 | * \value[since 6.13] ColorSpace The Color space used by the media (image or video) |
111 | * \value[since 6.16] AssistiveAlternateDescription A brief textual description of the purpose and meaning of an image. The text can be used by assistive technology. |
112 | */ |
113 | enum Property { |
114 | Empty = 0, |
115 | BitRate, |
116 | Channels, |
117 | Duration, |
118 | Genre, |
119 | SampleRate, |
120 | TrackNumber, |
121 | ReleaseYear, |
122 | , |
123 | Artist, |
124 | Album, |
125 | AlbumArtist, |
126 | Composer, |
127 | Lyricist, |
128 | Author, |
129 | Title, |
130 | Subject, |
131 | Generator, |
132 | PageCount, |
133 | WordCount, |
134 | LineCount, |
135 | Language, |
136 | Copyright, |
137 | Publisher, |
138 | CreationDate, |
139 | Keywords, |
140 | Width, |
141 | Height, |
142 | AspectRatio, |
143 | FrameRate, |
144 | Manufacturer, |
145 | Model, |
146 | |
147 | ImageDateTime, |
148 | ImageOrientation, |
149 | PhotoFlash, |
150 | PhotoPixelXDimension, |
151 | PhotoPixelYDimension, |
152 | PhotoDateTimeOriginal, |
153 | PhotoFocalLength, |
154 | PhotoFocalLengthIn35mmFilm, |
155 | PhotoExposureTime, |
156 | PhotoFNumber, |
157 | PhotoApertureValue, |
158 | PhotoExposureBiasValue, |
159 | PhotoWhiteBalance, |
160 | PhotoMeteringMode, |
161 | PhotoISOSpeedRatings, |
162 | PhotoSaturation, |
163 | PhotoSharpness, |
164 | PhotoGpsLatitude, |
165 | PhotoGpsLongitude, |
166 | PhotoGpsAltitude, |
167 | |
168 | TranslationUnitsTotal, |
169 | TranslationUnitsWithTranslation, |
170 | TranslationUnitsWithDraftTranslation, |
171 | TranslationLastAuthor, |
172 | TranslationLastUpDate, |
173 | TranslationTemplateDate, |
174 | |
175 | OriginUrl, |
176 | OriginEmailSubject, |
177 | OriginEmailSender, |
178 | OriginEmailMessageId, |
179 | DiscNumber, |
180 | Location, |
181 | Performer, |
182 | Ensemble, |
183 | Arranger, |
184 | Conductor, |
185 | Opus, |
186 | Label, |
187 | Compilation, |
188 | License, |
189 | Rating, |
190 | Lyrics, |
191 | ReplayGainAlbumPeak, |
192 | ReplayGainAlbumGain, |
193 | ReplayGainTrackPeak, |
194 | ReplayGainTrackGain, |
195 | Description, |
196 | |
197 | VideoCodec, |
198 | AudioCodec, |
199 | PixelFormat, |
200 | ColorSpace, |
201 | AssistiveAlternateDescription, |
202 | }; |
203 | |
204 | } // namespace Property |
205 | |
206 | using PropertyMultiMap = QMultiMap<Property::Property, QVariant>; |
207 | |
208 | } // namespace KFileMetaData |
209 | |
210 | Q_DECLARE_METATYPE(KFileMetaData::Property::Property) |
211 | Q_DECLARE_METATYPE(KFileMetaData::PropertyMultiMap) |
212 | |
213 | #endif |
214 | |