| 74 | } // Cr2Image::readMetadata |
| 75 | |
| 76 | void Cr2Image::writeMetadata() { |
| 77 | #ifdef EXIV2_DEBUG_MESSAGES |
| 78 | std::cerr << "Writing CR2 file " << io_->path() << "\n"; |
| 79 | #endif |
| 80 | ByteOrder bo = byteOrder(); |
| 81 | byte* pData = nullptr; |
| 82 | size_t size = 0; |
| 83 | IoCloser closer(*io_); |
| 84 | // Ensure that this is the correct image type |
| 85 | if (io_->open() == 0 && isCr2Type(*io_, false)) { |
| 86 | pData = io_->mmap(true); |
| 87 | size = io_->size(); |
| 88 | Internal::Cr2Header cr2Header; |
| 89 | if (0 == cr2Header.read(pData, 16)) { |
| 90 | bo = cr2Header.byteOrder(); |
| 91 | } |
| 92 | } |
| 93 | if (bo == invalidByteOrder) { |
| 94 | bo = littleEndian; |
| 95 | } |
| 96 | setByteOrder(bo); |
| 97 | Cr2Parser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw |
| 98 | } // Cr2Image::writeMetadata |
| 99 | |
| 100 | ByteOrder Cr2Parser::decode(ExifData& exifData, IptcData& iptcData, XmpData& xmpData, const byte* pData, size_t size) { |
| 101 | Internal::Cr2Header cr2Header; |