diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp index 1306370e..123df50b 100644 --- a/src/jpgimage.cpp +++ b/src/jpgimage.cpp @@ -88,6 +88,7 @@ namespace Exiv2 { const char Photoshop::ps3Id_[] = "Photoshop 3.0\0"; const char Photoshop::bimId_[] = "8BIM"; const uint16_t Photoshop::iptc_ = 0x0404; + const uint16_t Photoshop::preview_ = 0x040c; bool Photoshop::valid(const byte* pPsData, long sizePsData) @@ -197,6 +198,16 @@ namespace Exiv2 { record, sizeHdr, sizeData); } + int Photoshop::locatePreviewIrb(const byte* pPsData, + long sizePsData, + const byte** record, + uint32_t *const sizeHdr, + uint32_t *const sizeData) + { + return locateIrb(pPsData, sizePsData, preview_, + record, sizeHdr, sizeData); + } + DataBuf Photoshop::setIptcIrb(const byte* pPsData, long sizePsData, const IptcData& iptcData) diff --git a/src/jpgimage.hpp b/src/jpgimage.hpp index efaaff81..048b8436 100644 --- a/src/jpgimage.hpp +++ b/src/jpgimage.hpp @@ -66,6 +66,7 @@ namespace Exiv2 { static const char ps3Id_[]; //!< %Photoshop marker static const char bimId_[]; //!< %Photoshop marker static const uint16_t iptc_; //!< %Photoshop IPTC marker + static const uint16_t preview_; //!< %Photoshop preview marker /*! @brief Validates all IRBs @@ -108,6 +109,14 @@ namespace Exiv2 { const byte **record, uint32_t *const sizeHdr, uint32_t *const sizeData); + /*! + @brief Forwards to locatePreviewIrb() with \em psTag = \em preview_ + */ + static int locatePreviewIrb(const byte *pPsData, + long sizePsData, + const byte **record, + uint32_t *const sizeHdr, + uint32_t *const sizeData); /*! @brief Set the new IPTC IRB, keeps existing IRBs but removes the IPTC block if there is no new IPTC data to write.