From dc994a65f0fb68dd656a488cf2d664d69c3401bb Mon Sep 17 00:00:00 2001 From: Maxime Leblanc Date: Thu, 17 Jul 2014 14:03:56 +0200 Subject: [PATCH 1/2] ASF: full picture handling --- taglib/asf/asftag.cpp | 168 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 167 insertions(+), 1 deletion(-) diff --git a/taglib/asf/asftag.cpp b/taglib/asf/asftag.cpp index fe3ba08f..f1e8e814 100644 --- a/taglib/asf/asftag.cpp +++ b/taglib/asf/asftag.cpp @@ -113,7 +113,89 @@ String ASF::Tag::genre() const PictureMap ASF::Tag::pictures() const { - return PictureMap(); + PictureMap map; + if(d->attributeListMap.contains("WM/Picture")) + { + AttributeList list = d->attributeListMap["WM/Picture"]; + for( AttributeList::ConstIterator it = list.begin(); + it != list.end(); + ++it) + { + ASF::Picture asfPicture = (*it).toPicture(); + TagLib::Picture::Type type; + switch (asfPicture.type()) { + case ASF::Picture::Other: + type = TagLib::Picture::Other; + break; + case ASF::Picture::FileIcon: + type = TagLib::Picture::FileIcon; + break; + case ASF::Picture::OtherFileIcon: + type = TagLib::Picture::OtherFileIcon; + break; + case ASF::Picture::FrontCover: + type = TagLib::Picture::FrontCover; + break; + case ASF::Picture::BackCover: + type = TagLib::Picture::BackCover; + break; + case ASF::Picture::LeafletPage: + type = TagLib::Picture::LeafletPage; + break; + case ASF::Picture::Media: + type = TagLib::Picture::Media; + break; + case ASF::Picture::LeadArtist: + type = TagLib::Picture::LeadArtist; + break; + case ASF::Picture::Artist: + type = TagLib::Picture::Artist; + break; + case ASF::Picture::Conductor: + type = TagLib::Picture::Conductor; + break; + case ASF::Picture::Band: + type = TagLib::Picture::Band; + break; + case ASF::Picture::Composer: + type = TagLib::Picture::Composer; + break; + case ASF::Picture::Lyricist: + type = TagLib::Picture::Lyricist; + break; + case ASF::Picture::RecordingLocation: + type = TagLib::Picture::RecordingLocation; + break; + case ASF::Picture::DuringRecording: + type = TagLib::Picture::DuringRecording; + break; + case ASF::Picture::DuringPerformance: + type = TagLib::Picture::DuringPerformance; + break; + case ASF::Picture::MovieScreenCapture: + type = TagLib::Picture::MovieScreenCapture; + break; + case ASF::Picture::ColouredFish: + type = TagLib::Picture::ColouredFish; + break; + case ASF::Picture::Illustration: + type = TagLib::Picture::Illustration; + break; + case ASF::Picture::BandLogo: + type = TagLib::Picture::BandLogo; + break; + case ASF::Picture::PublisherLogo: + type = TagLib::Picture::PublisherLogo; + break; + } + TagLib::Picture picture(asfPicture.picture(), + type, + asfPicture.mimeType(), + asfPicture.description()); + map.insert(picture); + } + } + return PictureMap(map); } void ASF::Tag::setTitle(const String &value) @@ -163,6 +245,90 @@ void ASF::Tag::setTrack(uint value) void ASF::Tag::setPictures(const PictureMap &l) { + removeItem("WM/Picture"); + for(PictureMap::ConstIterator pictureMapIt = l.begin(); + pictureMapIt != l.end(); + ++pictureMapIt) + { + PictureList list = pictureMapIt->second; + for( PictureList::ConstIterator pictureListIt = list.begin(); + pictureListIt != list.end(); + ++pictureListIt) + { + const TagLib::Picture picture = (*pictureListIt); + ASF::Picture asfPicture; + asfPicture.setPicture(picture.data()); + asfPicture.setMimeType(picture.mime()); + asfPicture.setDescription(picture.description()); + switch (picture.type()) { + case TagLib::Picture::Other: + asfPicture.setType(ASF::Picture::Other); + break; + case TagLib::Picture::FileIcon: + asfPicture.setType(ASF::Picture::FileIcon); + break; + case TagLib::Picture::OtherFileIcon: + asfPicture.setType(ASF::Picture::OtherFileIcon); + break; + case TagLib::Picture::FrontCover: + asfPicture.setType(ASF::Picture::FrontCover); + break; + case TagLib::Picture::BackCover: + asfPicture.setType(ASF::Picture::BackCover); + break; + case TagLib::Picture::LeafletPage: + asfPicture.setType(ASF::Picture::LeafletPage); + break; + case TagLib::Picture::Media: + asfPicture.setType(ASF::Picture::Media); + break; + case TagLib::Picture::LeadArtist: + asfPicture.setType(ASF::Picture::LeadArtist); + break; + case TagLib::Picture::Artist: + asfPicture.setType(ASF::Picture::Artist); + break; + case TagLib::Picture::Conductor: + asfPicture.setType(ASF::Picture::Conductor); + break; + case TagLib::Picture::Band: + asfPicture.setType(ASF::Picture::Band); + break; + case TagLib::Picture::Composer: + asfPicture.setType(ASF::Picture::Composer); + break; + case TagLib::Picture::Lyricist: + asfPicture.setType(ASF::Picture::Lyricist); + break; + case TagLib::Picture::RecordingLocation: + asfPicture.setType(ASF::Picture::RecordingLocation); + break; + case TagLib::Picture::DuringRecording: + asfPicture.setType(ASF::Picture::DuringRecording); + break; + case TagLib::Picture::DuringPerformance: + asfPicture.setType(ASF::Picture::DuringPerformance); + break; + case TagLib::Picture::MovieScreenCapture: + asfPicture.setType(ASF::Picture::MovieScreenCapture); + break; + case TagLib::Picture::ColouredFish: + asfPicture.setType(ASF::Picture::ColouredFish); + break; + case TagLib::Picture::Illustration: + asfPicture.setType(ASF::Picture::Illustration); + break; + case TagLib::Picture::BandLogo: + asfPicture.setType(ASF::Picture::BandLogo); + break; + case TagLib::Picture::PublisherLogo: + asfPicture.setType(ASF::Picture::PublisherLogo); + break; + } + addAttribute("WM/Picture", Attribute(asfPicture)); + } + } + } ASF::AttributeListMap& ASF::Tag::attributeListMap() From a18d402bd98cfd92cb6d451fd27f3ed910568d72 Mon Sep 17 00:00:00 2001 From: Maxime Leblanc Date: Wed, 9 Sep 2015 10:32:31 +0200 Subject: [PATCH 2/2] asftag.cpp: run astyle on added parts --- taglib/asf/asftag.cpp | 162 +++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 82 deletions(-) diff --git a/taglib/asf/asftag.cpp b/taglib/asf/asftag.cpp index f1e8e814..b810eaa1 100644 --- a/taglib/asf/asftag.cpp +++ b/taglib/asf/asftag.cpp @@ -113,89 +113,87 @@ String ASF::Tag::genre() const PictureMap ASF::Tag::pictures() const { - PictureMap map; - if(d->attributeListMap.contains("WM/Picture")) - { - AttributeList list = d->attributeListMap["WM/Picture"]; - for( AttributeList::ConstIterator it = list.begin(); - it != list.end(); - ++it) - { - ASF::Picture asfPicture = (*it).toPicture(); - TagLib::Picture::Type type; - switch (asfPicture.type()) { - case ASF::Picture::Other: - type = TagLib::Picture::Other; - break; - case ASF::Picture::FileIcon: - type = TagLib::Picture::FileIcon; - break; - case ASF::Picture::OtherFileIcon: - type = TagLib::Picture::OtherFileIcon; - break; - case ASF::Picture::FrontCover: - type = TagLib::Picture::FrontCover; - break; - case ASF::Picture::BackCover: - type = TagLib::Picture::BackCover; - break; - case ASF::Picture::LeafletPage: - type = TagLib::Picture::LeafletPage; - break; - case ASF::Picture::Media: - type = TagLib::Picture::Media; - break; - case ASF::Picture::LeadArtist: - type = TagLib::Picture::LeadArtist; - break; - case ASF::Picture::Artist: - type = TagLib::Picture::Artist; - break; - case ASF::Picture::Conductor: - type = TagLib::Picture::Conductor; - break; - case ASF::Picture::Band: - type = TagLib::Picture::Band; - break; - case ASF::Picture::Composer: - type = TagLib::Picture::Composer; - break; - case ASF::Picture::Lyricist: - type = TagLib::Picture::Lyricist; - break; - case ASF::Picture::RecordingLocation: - type = TagLib::Picture::RecordingLocation; - break; - case ASF::Picture::DuringRecording: - type = TagLib::Picture::DuringRecording; - break; - case ASF::Picture::DuringPerformance: - type = TagLib::Picture::DuringPerformance; - break; - case ASF::Picture::MovieScreenCapture: - type = TagLib::Picture::MovieScreenCapture; - break; - case ASF::Picture::ColouredFish: - type = TagLib::Picture::ColouredFish; - break; - case ASF::Picture::Illustration: - type = TagLib::Picture::Illustration; - break; - case ASF::Picture::BandLogo: - type = TagLib::Picture::BandLogo; - break; - case ASF::Picture::PublisherLogo: - type = TagLib::Picture::PublisherLogo; - break; - } - TagLib::Picture picture(asfPicture.picture(), - type, - asfPicture.mimeType(), - asfPicture.description()); - map.insert(picture); - } + PictureMap map; + if(d->attributeListMap.contains("WM/Picture")) { + AttributeList list = d->attributeListMap["WM/Picture"]; + for(AttributeList::ConstIterator it = list.begin(); + it != list.end(); + ++it) { + ASF::Picture asfPicture = (*it).toPicture(); + TagLib::Picture::Type type; + switch(asfPicture.type()) { + case ASF::Picture::Other: + type = TagLib::Picture::Other; + break; + case ASF::Picture::FileIcon: + type = TagLib::Picture::FileIcon; + break; + case ASF::Picture::OtherFileIcon: + type = TagLib::Picture::OtherFileIcon; + break; + case ASF::Picture::FrontCover: + type = TagLib::Picture::FrontCover; + break; + case ASF::Picture::BackCover: + type = TagLib::Picture::BackCover; + break; + case ASF::Picture::LeafletPage: + type = TagLib::Picture::LeafletPage; + break; + case ASF::Picture::Media: + type = TagLib::Picture::Media; + break; + case ASF::Picture::LeadArtist: + type = TagLib::Picture::LeadArtist; + break; + case ASF::Picture::Artist: + type = TagLib::Picture::Artist; + break; + case ASF::Picture::Conductor: + type = TagLib::Picture::Conductor; + break; + case ASF::Picture::Band: + type = TagLib::Picture::Band; + break; + case ASF::Picture::Composer: + type = TagLib::Picture::Composer; + break; + case ASF::Picture::Lyricist: + type = TagLib::Picture::Lyricist; + break; + case ASF::Picture::RecordingLocation: + type = TagLib::Picture::RecordingLocation; + break; + case ASF::Picture::DuringRecording: + type = TagLib::Picture::DuringRecording; + break; + case ASF::Picture::DuringPerformance: + type = TagLib::Picture::DuringPerformance; + break; + case ASF::Picture::MovieScreenCapture: + type = TagLib::Picture::MovieScreenCapture; + break; + case ASF::Picture::ColouredFish: + type = TagLib::Picture::ColouredFish; + break; + case ASF::Picture::Illustration: + type = TagLib::Picture::Illustration; + break; + case ASF::Picture::BandLogo: + type = TagLib::Picture::BandLogo; + break; + case ASF::Picture::PublisherLogo: + type = TagLib::Picture::PublisherLogo; + break; + } + TagLib::Picture picture(asfPicture.picture(), + type, + asfPicture.mimeType(), + asfPicture.description()); + map.insert(picture); } - return PictureMap(map); + } + return PictureMap(map); } void ASF::Tag::setTitle(const String &value)