| 104 | } |
| 105 | |
| 106 | WriteMethod Cr2Parser::encode(BasicIo& io, const byte* pData, size_t size, ByteOrder byteOrder, ExifData& exifData, |
| 107 | IptcData& iptcData, XmpData& xmpData) { |
| 108 | // Delete IFDs which do not occur in TIFF images |
| 109 | static constexpr auto filteredIfds = std::array{ |
| 110 | IfdId::panaRawId, |
| 111 | }; |
| 112 | for (auto&& filteredIfd : filteredIfds) { |
| 113 | #ifdef EXIV2_DEBUG_MESSAGES |
| 114 | std::cerr << "Warning: Exif IFD " << filteredIfd << " not encoded\n"; |
| 115 | #endif |
| 116 | exifData.erase(std::remove_if(exifData.begin(), exifData.end(), Internal::FindExifdatum(filteredIfd)), |
| 117 | exifData.end()); |
| 118 | } |
| 119 | |
| 120 | auto header = Internal::Cr2Header(byteOrder); |
| 121 | Internal::OffsetWriter offsetWriter; |
| 122 | offsetWriter.setOrigin(Internal::OffsetWriter::cr2RawIfdOffset, Internal::Cr2Header::offset2addr(), byteOrder); |
| 123 | return Internal::TiffParserWorker::encode(io, pData, size, exifData, iptcData, xmpData, Internal::Tag::root, |
| 124 | Internal::TiffMapping::findEncoder, &header, &offsetWriter); |
| 125 | } |
| 126 | |
| 127 | // ************************************************************************* |
| 128 | // free functions |