File indexing completed on 2024-05-05 03:54:40

0001 /*
0002     This file is part of KFileMetaData
0003     SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #ifndef KFILEMETADATA_PROPERTIES
0009 #define KFILEMETADATA_PROPERTIES
0010 
0011 #include "kfilemetadata_export.h"
0012 
0013 #include <QMap>
0014 #include <QVariant>
0015 
0016 /** @file properties.h <KFileMetaData/Properties> */
0017 namespace KFileMetaData {
0018 namespace Property {
0019 
0020 /**
0021  * @brief The Property enum contains all files property types that KFileMetaData manipulates
0022  */
0023 enum Property {
0024     Empty = 0,
0025 
0026     /**
0027      * The Bit Rate of the Audio in the File. Represented as an integer
0028      * in kbit/sec
0029      */
0030     BitRate,
0031 
0032     /**
0033      * The number of channels of the Audio in the File. Represented as an
0034      * integer.
0035      */
0036     Channels,
0037 
0038     /**
0039      * The duration of the media in the file. Represented as an integer
0040      * in seconds.
0041      */
0042     Duration,
0043 
0044     /**
0045      * The Genre of an Audio file. This s represented as a string
0046      * of genres and not integers. The IDv1 standard provides a list of
0047      * commonly excepted genres.
0048      */
0049     Genre,
0050 
0051     /**
0052      * The same rate or frequency of the Audio in the file. This is represented
0053      * as an integer in Hz. So a file with "44.1KHz" will have a frequency
0054      * of 44100
0055      */
0056     SampleRate,
0057 
0058     /**
0059      * Represents the track number in a set. Typically maps to the "TRCK" tag
0060      * in IDv3
0061      */
0062     TrackNumber,
0063 
0064     /**
0065      * Indicates the year a track was released. Represented as an integer.
0066      * Typically mapped to the "TYE (Year)" tag in IDv1
0067      */
0068     ReleaseYear,
0069 
0070     /**
0071      * Represents a comment stored in the file. This can map
0072      * to e.g. the "COMM" field from IDv3
0073      */
0074     Comment,
0075 
0076     /**
0077      * Represents the artist of a media file. This generally corresponds
0078      * to the IDv1 ARTIST tag. Many extractors often split this string
0079      * into a number of artists.
0080      */
0081     Artist,
0082 
0083     /**
0084      * Represents the album of a media file. This generally corresponds
0085      * to the IDv1 ALBUM tag.
0086      */
0087     Album,
0088 
0089     /**
0090      * Represents the album artist of a media file. This generally corresponds
0091      * to the IDv3 TPE2 ("Band/Orchestra/Accompaniment") tag.
0092      */
0093     AlbumArtist,
0094 
0095     /**
0096      * Represents the Composer of a media file. This generally corresponds
0097      * to the IDv2 COMPOSER tag.
0098      */
0099     Composer,
0100 
0101     /**
0102      * Represents the Lyricist of a media file. This generally corresponds
0103      * to the IDv2 "Lyricist/text writer" tag.
0104      */
0105     Lyricist,
0106 
0107     /**
0108      * The Author field indicated the primary creator of a document.
0109      * This often corresponds directly to dc:creator
0110      */
0111     Author,
0112 
0113     /**
0114      * Refers to the Title of the content of the file. This can represented
0115      * by the IDv1 tag TT2 (Title/songname/content description) or the TITLE
0116      * in a PDF file or the 'dc:title' tag in DublinCore.
0117      */
0118     Title,
0119 
0120     /**
0121      * Refers to the subject of the file. This directly corresponds to the
0122      * 'dc:subject' tag from DublinCore.
0123      */
0124     Subject,
0125 
0126     /**
0127      * Refers to the Application used to create this file. In the ODF standard
0128      * this maps to the 'meta:generator' tag. In PDFs its mapped to the
0129      * "Producer" tag.
0130      */
0131     Generator,
0132 
0133     /**
0134      * The number of pages in a document
0135      */
0136     PageCount,
0137 
0138     /**
0139      * The number of words in a document. This is often only provided for
0140      * documents where the word count is available in the metadata.
0141      */
0142     WordCount,
0143 
0144     /**
0145      * The number of lines in a document. This is often only provided for
0146      * documents where the line count is available in the metadata.
0147      */
0148     LineCount,
0149 
0150     /**
0151      * The language the document is written in. This directly maps to the
0152      * 'dc:language' tag from DublinCore. We do NOT employ any language
0153      * detection schemes on the text.
0154      * @since 5.50
0155      */
0156     Language,
0157 
0158     /**
0159      * The copyright of the file. Represented as a string.
0160      */
0161     Copyright,
0162 
0163     /**
0164      * The publisher of the content. Represented as a string.
0165      */
0166     Publisher,
0167 
0168     /**
0169      * The date the content of the file was created. This is extracted
0170      * from the File MetaData and not from the file system.
0171      * In ODF, it corresponds to "meta:creation-date", in PDF to the
0172      * "CreationDate" tag, and otherwise the "dcterms:created" tag.
0173      */
0174     CreationDate,
0175 
0176     /**
0177      * The keywords used to represent the document. This is mostly a string list
0178      * of all the keywords.
0179      */
0180     Keywords,
0181 
0182     /**
0183      * Represents the width of the Media in pixels. This is generally
0184      * only applicable for Images and Videos.
0185      */
0186     Width,
0187 
0188     /**
0189      * Represents the height of the Media in pixels. This is generally
0190      * only applicable for Images and Videos.
0191      */
0192     Height,
0193 
0194     /**
0195      * The Aspect Ratio of the visual image or video.
0196      * It is the width of a pixel divided by the height of the pixel.
0197      */
0198     AspectRatio,
0199 
0200     /**
0201      * Number of frames per second
0202      */
0203     FrameRate,
0204 
0205     /**
0206      * The manufacturer of the equipment used for generating the file
0207      * and metadata. Typically maps to the 'Exif.Image.Make' tag.
0208      * @since 5.60
0209      */
0210     Manufacturer,
0211 
0212     /**
0213      * The model name of the equipment used for generating the file
0214      * and metadata. Typically maps to the 'Exif.Image.Model' tag.
0215      * @since 5.60
0216      */
0217     Model,
0218 
0219     ImageDateTime,
0220     ImageOrientation,
0221     PhotoFlash,
0222     PhotoPixelXDimension,
0223     PhotoPixelYDimension,
0224     PhotoDateTimeOriginal,
0225     PhotoFocalLength,
0226     PhotoFocalLengthIn35mmFilm,
0227     PhotoExposureTime,
0228     PhotoFNumber,
0229     PhotoApertureValue,
0230     PhotoExposureBiasValue,
0231     PhotoWhiteBalance,
0232     PhotoMeteringMode,
0233     PhotoISOSpeedRatings,
0234     PhotoSaturation,
0235     PhotoSharpness,
0236     PhotoGpsLatitude,
0237     PhotoGpsLongitude,
0238     PhotoGpsAltitude,
0239 
0240     TranslationUnitsTotal,
0241     TranslationUnitsWithTranslation,
0242     TranslationUnitsWithDraftTranslation,
0243     TranslationLastAuthor,
0244     TranslationLastUpDate,
0245     TranslationTemplateDate,
0246 
0247     /**
0248      * The URL this file has originally been downloaded from.
0249      */
0250     OriginUrl,
0251 
0252     /**
0253      * The subject of the email this file was originally attached to.
0254      */
0255     OriginEmailSubject,
0256 
0257     /**
0258      * The sender of the email this file was originally attached to.
0259      */
0260     OriginEmailSender,
0261 
0262     /**
0263      * The message ID of the email this file was originally attached to.
0264      */
0265     OriginEmailMessageId,
0266 
0267     /**
0268      * Represents the disc number in a multi-disc set. Typically maps to the "TPOS" tag for mp3
0269      */
0270     DiscNumber,
0271 
0272     /**
0273      * Represents the location where an audio file was recorded.
0274      */
0275     Location,
0276 
0277     /**
0278      * Represents the (lead) performer of an audio file.
0279      */
0280     Performer,
0281 
0282     /**
0283      * Represents the ensemble of an audio file.
0284      */
0285     Ensemble,
0286 
0287     /**
0288      * Represents the arranger of an audio file.
0289      */
0290     Arranger,
0291 
0292     /**
0293      * Represents the conductor of an audio file.
0294      */
0295     Conductor,
0296 
0297     /**
0298      * Represents the opus of an audio file mostly used for classical music.
0299      */
0300     Opus,
0301 
0302     /**
0303      * Represents the label of the content.
0304      */
0305     Label,
0306 
0307     /**
0308      * Contains the name of the compilation of an audio file.
0309      */
0310     Compilation,
0311 
0312     /**
0313      * Contains the license information of the file
0314      */
0315     License,
0316 
0317     /**
0318      * For ratings stored in Metadata tags
0319      */
0320     Rating,
0321     /**
0322      * Contains the lyrics of a song embedded in the file
0323      */
0324     Lyrics,
0325     /**
0326       * Contains ReplayGain information for audio files
0327       */
0328     ReplayGainAlbumPeak,
0329     /**
0330       * Contains ReplayGain information for audio files
0331       * The album gain is given in "dB"
0332       */
0333     ReplayGainAlbumGain,
0334     /**
0335       * Contains ReplayGain information for audio files
0336       */
0337     ReplayGainTrackPeak,
0338     /**
0339       * Contains ReplayGain information for audio files
0340       * The track gain is given in "dB"
0341       */
0342     ReplayGainTrackGain,
0343 
0344     /**
0345      * Represents the description stored in the file. This maps
0346      * to the 'dc:description' tag from DublinCore
0347      */
0348     Description,
0349 };
0350 
0351 } // namespace Property
0352 
0353 using PropertyMultiMap = QMultiMap<Property::Property, QVariant>;
0354 
0355 } // namespace KFileMetaData
0356 
0357 Q_DECLARE_METATYPE(KFileMetaData::Property::Property)
0358 
0359 #endif