Removed trailing whitespace.
This commit is contained in:
+1
-1
@@ -344,7 +344,7 @@ namespace Action {
|
||||
md = exifData.findKey(
|
||||
Exiv2::ExifKey("Exif.Photo.FocalLengthIn35mmFilm"));
|
||||
if (md != exifData.end()) {
|
||||
std::cout << " ("<< _("35 mm equivalent") << ": "
|
||||
std::cout << " ("<< _("35 mm equivalent") << ": "
|
||||
<< md->print(&exifData) << ")";
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -566,7 +566,7 @@ namespace Exiv2 {
|
||||
//! A lens id and a pretty-print function for special treatment of the id.
|
||||
struct LensIdFct {
|
||||
long id_; //!< Lens id
|
||||
PrintFct fct_; //!< Pretty-print function
|
||||
PrintFct fct_; //!< Pretty-print function
|
||||
//! Comparison operator for find template
|
||||
bool operator==(long id) const { return id_ == id; }
|
||||
};
|
||||
|
||||
+25
-25
@@ -70,13 +70,13 @@ const unsigned char kJp2UuidXmp[] = "\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x
|
||||
const unsigned char Jp2Signature[12] = { 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a };
|
||||
|
||||
//! @cond IGNORE
|
||||
struct Jp2BoxHeader
|
||||
struct Jp2BoxHeader
|
||||
{
|
||||
uint32_t boxLength;
|
||||
uint32_t boxType;
|
||||
};
|
||||
|
||||
struct Jp2ImageHeaderBox
|
||||
struct Jp2ImageHeaderBox
|
||||
{
|
||||
uint32_t imageHeight;
|
||||
uint32_t imageWidth;
|
||||
@@ -88,7 +88,7 @@ struct Jp2ImageHeaderBox
|
||||
uint16_t compressionTypeProfile;
|
||||
};
|
||||
|
||||
struct Jp2UuidBox
|
||||
struct Jp2UuidBox
|
||||
{
|
||||
uint8_t uuid[16];
|
||||
};
|
||||
@@ -96,7 +96,7 @@ struct Jp2UuidBox
|
||||
|
||||
// *****************************************************************************
|
||||
// class member definitions
|
||||
namespace Exiv2
|
||||
namespace Exiv2
|
||||
{
|
||||
|
||||
Jp2Image::Jp2Image(BasicIo::AutoPtr io, bool /*create*/)
|
||||
@@ -139,7 +139,7 @@ namespace Exiv2
|
||||
box.boxLength = getLong((byte*)&box.boxLength, bigEndian);
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::readMetadata: Position: " << position << "\n";
|
||||
std::cout << "Exiv2::Jp2Image::readMetadata: Find box type: " << std::string((const char*)&box.boxType)
|
||||
std::cout << "Exiv2::Jp2Image::readMetadata: Find box type: " << std::string((const char*)&box.boxType)
|
||||
<< " lenght: " << box.boxLength << "\n";
|
||||
#endif
|
||||
box.boxType = getLong((byte*)&box.boxType, bigEndian);
|
||||
@@ -170,7 +170,7 @@ namespace Exiv2
|
||||
subBox.boxLength = getLong((byte*)&subBox.boxLength, bigEndian);
|
||||
subBox.boxType = getLong((byte*)&subBox.boxType, bigEndian);
|
||||
|
||||
if((subBox.boxType == kJp2BoxTypeImageHeader) &&
|
||||
if((subBox.boxType == kJp2BoxTypeImageHeader) &&
|
||||
(io_->read((byte*)&ihdr, sizeof(ihdr)) == sizeof(ihdr)))
|
||||
{
|
||||
#ifdef DEBUG
|
||||
@@ -263,7 +263,7 @@ namespace Exiv2
|
||||
if (io_->error()) throw Error(14);
|
||||
if (bufRead != rawData.size_) throw Error(20);
|
||||
|
||||
if (IptcParser::decode(iptcData_, rawData.pData_, rawData.size_))
|
||||
if (IptcParser::decode(iptcData_, rawData.pData_, rawData.size_))
|
||||
{
|
||||
#ifndef SUPPRESS_WARNINGS
|
||||
std::cerr << "Warning: Failed to decode IPTC metadata.\n";
|
||||
@@ -288,14 +288,14 @@ namespace Exiv2
|
||||
if (idx != std::string::npos && idx > 0)
|
||||
{
|
||||
#ifndef SUPPRESS_WARNINGS
|
||||
std::cerr << "Exiv2::Jp2Image::readMetadata: Removing "
|
||||
std::cerr << "Exiv2::Jp2Image::readMetadata: Removing "
|
||||
<< static_cast<uint32_t>(idx)
|
||||
<< " characters from the beginning of the XMP packet\n";
|
||||
#endif
|
||||
xmpPacket_ = xmpPacket_.substr(idx);
|
||||
}
|
||||
|
||||
if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_))
|
||||
if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_))
|
||||
{
|
||||
#ifndef SUPPRESS_WARNINGS
|
||||
std::cerr << "Exiv2::Jp2Image::readMetadata: Failed to decode XMP metadata.\n";
|
||||
@@ -322,7 +322,7 @@ namespace Exiv2
|
||||
|
||||
void Jp2Image::writeMetadata()
|
||||
{
|
||||
if (io_->open() != 0)
|
||||
if (io_->open() != 0)
|
||||
{
|
||||
throw Error(9, io_->path(), strError());
|
||||
}
|
||||
@@ -362,7 +362,7 @@ namespace Exiv2
|
||||
byte boxUUIDtype[4];
|
||||
DataBuf bheaderBuf(8); // Box header : 4 bytes (data size) + 4 bytes (box type).
|
||||
|
||||
// FIXME: Andreas, why the loop do not stop when EOF is taken from _io. The loop go out by an exception
|
||||
// FIXME: Andreas, why the loop do not stop when EOF is taken from _io. The loop go out by an exception
|
||||
// generated by a zero size data read.
|
||||
|
||||
while(io_->tell() < io_->size())
|
||||
@@ -384,7 +384,7 @@ namespace Exiv2
|
||||
box.boxType = getLong(bheaderBuf.pData_ + 4, bigEndian);
|
||||
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Find box type: " << bheaderBuf.pData_ + 4
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Find box type: " << bheaderBuf.pData_ + 4
|
||||
<< " lenght: " << box.boxLength << "\n";
|
||||
#endif
|
||||
|
||||
@@ -406,7 +406,7 @@ namespace Exiv2
|
||||
DataBuf boxBuf(box.boxLength); // Box header (8 bytes) + box data.
|
||||
memcpy(boxBuf.pData_, bheaderBuf.pData_, 8); // Copy header.
|
||||
bufRead = io_->read(boxBuf.pData_ + 8, box.boxLength - 8); // Extract box data.
|
||||
if (io_->error())
|
||||
if (io_->error())
|
||||
{
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Error reading source file\n";
|
||||
@@ -415,7 +415,7 @@ namespace Exiv2
|
||||
throw Error(14);
|
||||
}
|
||||
|
||||
if (bufRead != (long)(box.boxLength - 8))
|
||||
if (bufRead != (long)(box.boxLength - 8))
|
||||
{
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Cannot read source file data\n";
|
||||
@@ -435,13 +435,13 @@ namespace Exiv2
|
||||
|
||||
// Write all updated metadata here, just after JP2Header.
|
||||
|
||||
if (exifData_.count() > 0)
|
||||
if (exifData_.count() > 0)
|
||||
{
|
||||
// Update Exif data to a new UUID box
|
||||
|
||||
Blob blob;
|
||||
ExifParser::encode(blob, littleEndian, exifData_);
|
||||
if (blob.size())
|
||||
if (blob.size())
|
||||
{
|
||||
const unsigned char ExifHeader[] = {0x45, 0x78, 0x69, 0x66, 0x00, 0x00};
|
||||
|
||||
@@ -458,19 +458,19 @@ namespace Exiv2
|
||||
memcpy(boxData.pData_ + 8 + 16, rawExif.pData_, rawExif.size_);
|
||||
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Exif metadata (lenght: "
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Exif metadata (lenght: "
|
||||
<< boxData.size_ << ")\n";
|
||||
#endif
|
||||
if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21);
|
||||
}
|
||||
}
|
||||
|
||||
if (iptcData_.count() > 0)
|
||||
if (iptcData_.count() > 0)
|
||||
{
|
||||
// Update Iptc data to a new UUID box
|
||||
|
||||
DataBuf rawIptc = IptcParser::encode(iptcData_);
|
||||
if (rawIptc.size_ > 0)
|
||||
if (rawIptc.size_ > 0)
|
||||
{
|
||||
DataBuf boxData(8 + 16 + rawIptc.size_);
|
||||
ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian);
|
||||
@@ -481,25 +481,25 @@ namespace Exiv2
|
||||
memcpy(boxData.pData_ + 8 + 16, rawIptc.pData_, rawIptc.size_);
|
||||
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Iptc metadata (lenght: "
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Iptc metadata (lenght: "
|
||||
<< boxData.size_ << ")\n";
|
||||
#endif
|
||||
if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21);
|
||||
}
|
||||
}
|
||||
|
||||
if (writeXmpFromPacket() == false)
|
||||
if (writeXmpFromPacket() == false)
|
||||
{
|
||||
if (XmpParser::encode(xmpPacket_, xmpData_))
|
||||
if (XmpParser::encode(xmpPacket_, xmpData_))
|
||||
{
|
||||
#ifndef SUPPRESS_WARNINGS
|
||||
std::cerr << "Error: Failed to encode XMP metadata.\n";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (xmpPacket_.size() > 0)
|
||||
if (xmpPacket_.size() > 0)
|
||||
{
|
||||
// Update Xmp data to a new UUID box
|
||||
// Update Xmp data to a new UUID box
|
||||
|
||||
DataBuf xmp(reinterpret_cast<const byte*>(xmpPacket_.data()), static_cast<long>(xmpPacket_.size()));
|
||||
DataBuf boxData(8 + 16 + xmp.size_);
|
||||
@@ -511,7 +511,7 @@ namespace Exiv2
|
||||
memcpy(boxData.pData_ + 8 + 16, xmp.pData_, xmp.size_);
|
||||
|
||||
#ifdef DEBUG
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with XMP metadata (lenght: "
|
||||
std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with XMP metadata (lenght: "
|
||||
<< boxData.size_ << ")\n";
|
||||
#endif
|
||||
if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21);
|
||||
|
||||
+3
-3
@@ -44,14 +44,14 @@
|
||||
|
||||
// *****************************************************************************
|
||||
// namespace extensions
|
||||
namespace Exiv2
|
||||
namespace Exiv2
|
||||
{
|
||||
|
||||
// *****************************************************************************
|
||||
// class definitions
|
||||
|
||||
// Add JPEG-2000 to the supported image formats
|
||||
namespace ImageType
|
||||
namespace ImageType
|
||||
{
|
||||
const int jp2 = 15; //!< JPEG-2000 image type
|
||||
}
|
||||
@@ -75,7 +75,7 @@ namespace Exiv2
|
||||
instance after it is passed to this method. Use the Image::io()
|
||||
method to get a temporary reference.
|
||||
@param create Specifies if an existing image should be read (false)
|
||||
or if a new file should be created (true).
|
||||
or if a new file should be created (true).
|
||||
This option is not yet implemented.
|
||||
*/
|
||||
Jp2Image(BasicIo::AutoPtr io, bool create);
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ namespace Exiv2 {
|
||||
Key::~Key()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Key::AutoPtr Key::clone() const
|
||||
{
|
||||
return AutoPtr(clone_());
|
||||
|
||||
+1
-1
@@ -187,7 +187,7 @@ namespace Exiv2 {
|
||||
method with a pointer to the metadata container if possible.
|
||||
|
||||
This functionality is currently only implemented for Exif tags.
|
||||
The pointer is ignored when used to write IPTC datasets or XMP
|
||||
The pointer is ignored when used to write IPTC datasets or XMP
|
||||
properties.
|
||||
|
||||
Without the optional metadata pointer, you do not usually have to use
|
||||
|
||||
+5
-5
@@ -53,7 +53,7 @@ EXIV2_RCSID("@(#) $Id$")
|
||||
// *****************************************************************************
|
||||
namespace {
|
||||
using namespace Exiv2;
|
||||
/*!
|
||||
/*!
|
||||
@brief Decrypt Nikon data (Ref [4])
|
||||
@param pData Pointer to the data to decrypt
|
||||
@param size Size of the data buffer
|
||||
@@ -1100,12 +1100,12 @@ fmountlens[] = {
|
||||
{0x80,0x48,0x1A,0x1A,0x24,0x24,0x85,0x06, "Nikon", "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED"},
|
||||
{0x81,0x54,0x80,0x80,0x18,0x18,0x86,0x0E, "Nikon", "AF-S VR Nikkor 200mm f/2G IF-ED"},
|
||||
{0x82,0x48,0x8E,0x8E,0x24,0x24,0x87,0x0E, "Nikon", "AF-S VR Nikkor 300mm f/2.8G IF-ED"},
|
||||
//#83
|
||||
//#84
|
||||
//#85
|
||||
//#83
|
||||
//#84
|
||||
//#85
|
||||
//#86
|
||||
//#87
|
||||
//#88
|
||||
//#88
|
||||
{0x89,0x3C,0x53,0x80,0x30,0x3C,0x8B,0x06, "Nikon", "AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED"},
|
||||
{0x8A,0x54,0x6A,0x6A,0x24,0x24,0x8C,0x0E, "Nikon", "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED"},
|
||||
{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0xFD,0x0E, "Nikon", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"},
|
||||
|
||||
+2
-2
@@ -435,7 +435,7 @@ namespace Exiv2 {
|
||||
};
|
||||
|
||||
//! MacroMode
|
||||
extern const TagDetails olympusMacroMode[] = {
|
||||
extern const TagDetails olympusMacroMode[] = {
|
||||
{ 0, N_("Off") },
|
||||
{ 1, N_("On") },
|
||||
{ 2, N_("Super Macro") }
|
||||
@@ -958,7 +958,7 @@ namespace Exiv2 {
|
||||
case 1: os << ", " << _("Auto-Override"); break;
|
||||
default: os << value.toLong(3); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
+19
-19
@@ -115,7 +115,7 @@ namespace Exiv2 {
|
||||
static DataBuf keyTXTChunk(const DataBuf& data, bool stripHeader=false);
|
||||
|
||||
/*!
|
||||
@brief Return a complete PNG chunk data compressed or not as buffer. Data returned is formated
|
||||
@brief Return a complete PNG chunk data compressed or not as buffer. Data returned is formated
|
||||
accordingly with metadata \em type to host passed by \em metadata.
|
||||
|
||||
@param metadata metadata buffer.
|
||||
@@ -126,7 +126,7 @@ namespace Exiv2 {
|
||||
|
||||
private:
|
||||
/*!
|
||||
@brief Parse PNG Text chunk to determine type and extract content.
|
||||
@brief Parse PNG Text chunk to determine type and extract content.
|
||||
Supported Chunk types are tTXt, zTXt, and iTXt.
|
||||
*/
|
||||
static DataBuf parseTXTChunk(const DataBuf& data,
|
||||
@@ -134,7 +134,7 @@ namespace Exiv2 {
|
||||
TxtChunkType type);
|
||||
|
||||
/*!
|
||||
@brief Parse PNG chunk contents to extract metadata container and assign it to image.
|
||||
@brief Parse PNG chunk contents to extract metadata container and assign it to image.
|
||||
Supported contents are:
|
||||
Exif raw text profile generated by ImageMagick ==> Image Exif metadata.
|
||||
Iptc raw text profile generated by ImageMagick ==> Image Iptc metadata.
|
||||
@@ -142,12 +142,12 @@ namespace Exiv2 {
|
||||
Xmp packet generated by Adobe ==> Image Xmp metadata.
|
||||
Description string ==> Image Comments.
|
||||
*/
|
||||
static void parseChunkContent(Image* pImage,
|
||||
const byte* key,
|
||||
static void parseChunkContent(Image* pImage,
|
||||
const byte* key,
|
||||
const DataBuf arr);
|
||||
|
||||
/*!
|
||||
@brief Return a compressed (zTXt) or uncompressed (tEXt) PNG ASCII text chunk
|
||||
@brief Return a compressed (zTXt) or uncompressed (tEXt) PNG ASCII text chunk
|
||||
(header + key + flags + data + CRC) as data buffer.
|
||||
|
||||
@param key PNG Chunk key.
|
||||
@@ -157,7 +157,7 @@ namespace Exiv2 {
|
||||
static DataBuf makeAsciiTxtChunk(const DataBuf& key, const DataBuf& data, bool compress);
|
||||
|
||||
/*!
|
||||
@brief Return a compressed or uncompressed (iTXt) PNG UTF8 text chunk
|
||||
@brief Return a compressed or uncompressed (iTXt) PNG UTF8 text chunk
|
||||
(header + key + flags + data + CRC) as data buffer.
|
||||
|
||||
@param key PNG Chunk key.
|
||||
@@ -169,15 +169,15 @@ namespace Exiv2 {
|
||||
/*!
|
||||
@brief Wrapper around zlib to uncompress a PNG chunk content.
|
||||
*/
|
||||
static void zlibUncompress(const byte* compressedText,
|
||||
unsigned int compressedTextSize,
|
||||
static void zlibUncompress(const byte* compressedText,
|
||||
unsigned int compressedTextSize,
|
||||
DataBuf& arr);
|
||||
|
||||
/*!
|
||||
@brief Wrapper around zlib to compress a PNG chunk content.
|
||||
*/
|
||||
static void zlibCompress(const byte* text,
|
||||
unsigned int textSize,
|
||||
static void zlibCompress(const byte* text,
|
||||
unsigned int textSize,
|
||||
DataBuf& arr);
|
||||
|
||||
/*!
|
||||
@@ -190,18 +190,18 @@ namespace Exiv2 {
|
||||
*/
|
||||
static DataBuf writeRawProfile(const DataBuf& profile_data, const DataBuf& profile_type);
|
||||
|
||||
static size_t copyString(char* destination,
|
||||
const char* source,
|
||||
static size_t copyString(char* destination,
|
||||
const char* source,
|
||||
const size_t length);
|
||||
|
||||
static long formatString(char* string,
|
||||
const size_t length,
|
||||
const char* format,
|
||||
static long formatString(char* string,
|
||||
const size_t length,
|
||||
const char* format,
|
||||
...);
|
||||
|
||||
static long formatStringList(char *string,
|
||||
const size_t length,
|
||||
const char *format,
|
||||
static long formatStringList(char *string,
|
||||
const size_t length,
|
||||
const char *format,
|
||||
va_list operands);
|
||||
|
||||
}; // class PngChunk
|
||||
|
||||
+2
-2
@@ -44,14 +44,14 @@
|
||||
|
||||
// *****************************************************************************
|
||||
// namespace extensions
|
||||
namespace Exiv2
|
||||
namespace Exiv2
|
||||
{
|
||||
|
||||
// *****************************************************************************
|
||||
// class definitions
|
||||
|
||||
// Add PNG to the supported image formats
|
||||
namespace ImageType
|
||||
namespace ImageType
|
||||
{
|
||||
const int png = 6; //!< PNG image type (see class PngImage)
|
||||
}
|
||||
|
||||
+18
-18
@@ -95,7 +95,7 @@ namespace {
|
||||
|
||||
//! A number of image loaders configured in the loaderList_ table
|
||||
static PreviewId getNumLoaders();
|
||||
|
||||
|
||||
protected:
|
||||
//! Constructor. Sets all image properies to unknown.
|
||||
Loader(PreviewId id, const Image &image);
|
||||
@@ -115,7 +115,7 @@ namespace {
|
||||
|
||||
//! Identifies preview image type
|
||||
PreviewId id_;
|
||||
|
||||
|
||||
//! Source image reference
|
||||
const Image &image_;
|
||||
|
||||
@@ -124,10 +124,10 @@ namespace {
|
||||
|
||||
//! Preview image length
|
||||
uint32_t height_;
|
||||
|
||||
|
||||
//! Preview image size in bytes
|
||||
uint32_t size_;
|
||||
|
||||
|
||||
//! True if the source image contains a preview image of given type
|
||||
bool valid_;
|
||||
};
|
||||
@@ -135,7 +135,7 @@ namespace {
|
||||
//! Loader for Jpeg previews that are not read into ExifData directly
|
||||
class LoaderExifJpeg : public Loader {
|
||||
public:
|
||||
|
||||
|
||||
//! Constructor
|
||||
LoaderExifJpeg(PreviewId id, const Image &image, int parIdx);
|
||||
|
||||
@@ -191,7 +191,7 @@ namespace {
|
||||
|
||||
//! Table that holds all possible data/size pairs. parIdx is an index to this table
|
||||
static const Param param_[];
|
||||
|
||||
|
||||
//! Key that points to the Value that contains the JPEG preview in data area
|
||||
ExifKey dataKey_;
|
||||
};
|
||||
@@ -214,7 +214,7 @@ namespace {
|
||||
protected:
|
||||
//! Name of the group that contains the preview image
|
||||
const char *group_;
|
||||
|
||||
|
||||
//! Tag that contains image data. Possible values are "StripOffsets" or "TileOffsets"
|
||||
std::string offsetTag_;
|
||||
|
||||
@@ -347,7 +347,7 @@ namespace {
|
||||
}
|
||||
|
||||
if (offset_ == 0 || size_ == 0) return;
|
||||
|
||||
|
||||
if (param_[parIdx].baseOffsetKey_) {
|
||||
pos = image_.exifData().findKey(ExifKey(param_[parIdx].baseOffsetKey_));
|
||||
if (pos != image_.exifData().end()) {
|
||||
@@ -356,7 +356,7 @@ namespace {
|
||||
}
|
||||
|
||||
if (offset_ + size_ > static_cast<uint32_t>(image_.io().size())) return;
|
||||
|
||||
|
||||
valid_ = true;
|
||||
}
|
||||
|
||||
@@ -417,7 +417,7 @@ namespace {
|
||||
}
|
||||
|
||||
LoaderExifDataJpeg::LoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx)
|
||||
: Loader(id, image),
|
||||
: Loader(id, image),
|
||||
dataKey_(param_[parIdx].dataKey_)
|
||||
{
|
||||
ExifData::const_iterator pos = image_.exifData().findKey(dataKey_);
|
||||
@@ -452,7 +452,7 @@ namespace {
|
||||
ExifData::const_iterator pos = image_.exifData().findKey(dataKey_);
|
||||
if (pos != image_.exifData().end()) {
|
||||
DataBuf buf = pos->dataArea(); // indirect data
|
||||
|
||||
|
||||
if (buf.size_ == 0) { // direct data
|
||||
buf = DataBuf(pos->size());
|
||||
pos->copy(buf.pData_, invalidByteOrder);
|
||||
@@ -471,7 +471,7 @@ namespace {
|
||||
|
||||
DataBuf buf = getData();
|
||||
if (buf.size_ == 0) return false;
|
||||
|
||||
|
||||
try {
|
||||
Image::AutoPtr image = ImageFactory::open(buf.pData_, buf.size_);
|
||||
if (image.get() == 0) return false;
|
||||
@@ -495,7 +495,7 @@ namespace {
|
||||
|
||||
int offsetCount = 0;
|
||||
ExifData::const_iterator pos;
|
||||
|
||||
|
||||
// check if the group_ contains a preview image
|
||||
if (param_[parIdx].checkTag_) {
|
||||
pos = exifData.findKey(ExifKey(param_[parIdx].checkTag_));
|
||||
@@ -508,7 +508,7 @@ namespace {
|
||||
offsetTag_ = "StripOffsets";
|
||||
sizeTag_ = "StripByteCounts";
|
||||
offsetCount = pos->value().count();
|
||||
}
|
||||
}
|
||||
else {
|
||||
pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".TileOffsets"));
|
||||
if (pos == exifData.end()) return;
|
||||
@@ -535,7 +535,7 @@ namespace {
|
||||
if (pos != exifData.end()) {
|
||||
height_ = pos->value().toLong();
|
||||
}
|
||||
|
||||
|
||||
if (width_ == 0 || height_ == 0) return;
|
||||
|
||||
valid_ = true;
|
||||
@@ -564,11 +564,11 @@ namespace {
|
||||
for (ExifData::const_iterator pos = exifData.begin(); pos != exifData.end(); ++pos) {
|
||||
if (pos->groupName() == group_) {
|
||||
|
||||
/*
|
||||
/*
|
||||
write only the neccessary tags
|
||||
tags that especially could cause problems are:
|
||||
"NewSubfileType" - the result is no longer a thumbnail, it is a standalone image
|
||||
"Orientation" - this tag typically appears only in the "Image" group. Deleting it ensures
|
||||
"Orientation" - this tag typically appears only in the "Image" group. Deleting it ensures
|
||||
consistent result for all previews, including JPEG
|
||||
*/
|
||||
std::string name = pos->tagName();
|
||||
@@ -733,7 +733,7 @@ namespace Exiv2 {
|
||||
if (loader.get()) {
|
||||
buf = loader->getData();
|
||||
}
|
||||
|
||||
|
||||
return PreviewImage(properties, buf);
|
||||
}
|
||||
} // namespace Exiv2
|
||||
|
||||
@@ -309,7 +309,7 @@ namespace Exiv2 {
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
if ( offset > sizeData
|
||||
if ( offset > sizeData
|
||||
|| size > sizeData
|
||||
|| baseOffset + offset > sizeData - size) {
|
||||
#ifndef SUPPRESS_WARNINGS
|
||||
@@ -350,7 +350,7 @@ namespace Exiv2 {
|
||||
const byte* pStrip = pData + baseOffset + offset;
|
||||
const uint32_t size = static_cast<uint32_t>(pSize->toLong(i));
|
||||
|
||||
if ( offset > sizeData
|
||||
if ( offset > sizeData
|
||||
|| size > sizeData
|
||||
|| baseOffset + offset > sizeData - size) {
|
||||
#ifndef SUPPRESS_WARNINGS
|
||||
@@ -1345,7 +1345,7 @@ namespace Exiv2 {
|
||||
TypeId toTypeId(TiffType tiffType, uint16_t tag, uint16_t group)
|
||||
{
|
||||
TypeId ti = TypeId(tiffType);
|
||||
// On the fly type conversion for Exif.Photo.UserComment
|
||||
// On the fly type conversion for Exif.Photo.UserComment
|
||||
if (tag == 0x9286 && group == Group::exif && ti == undefined) {
|
||||
ti = comment;
|
||||
}
|
||||
|
||||
@@ -869,7 +869,7 @@ namespace Exiv2 {
|
||||
*/
|
||||
virtual uint32_t doSizeData() const;
|
||||
/*!
|
||||
@brief Implements sizeImage(). Return the sum of the image sizes of
|
||||
@brief Implements sizeImage(). Return the sum of the image sizes of
|
||||
all components plus that of the next-IFD, if there is any.
|
||||
*/
|
||||
virtual uint32_t doSizeImage() const;
|
||||
|
||||
+1
-1
@@ -190,7 +190,7 @@ namespace Exiv2 {
|
||||
@brief Utility class containing a character array. All it does is to take
|
||||
care of memory allocation and deletion. Its primary use is meant to
|
||||
be as a stack variable in functions that need a temporary data
|
||||
buffer.
|
||||
buffer.
|
||||
*/
|
||||
class EXIV2API DataBuf {
|
||||
public:
|
||||
|
||||
+9
-9
@@ -58,7 +58,7 @@ namespace Exiv2 {
|
||||
Value::~Value()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Value& Value::operator=(const Value& rhs)
|
||||
{
|
||||
if (this == &rhs) return *this;
|
||||
@@ -151,21 +151,21 @@ namespace Exiv2 {
|
||||
return toString();
|
||||
}
|
||||
|
||||
DataValue::DataValue(TypeId typeId) : Value(typeId)
|
||||
DataValue::DataValue(TypeId typeId) : Value(typeId)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
DataValue::DataValue(const byte* buf,
|
||||
long len, ByteOrder byteOrder,TypeId typeId)
|
||||
: Value(typeId)
|
||||
{
|
||||
read(buf, len, byteOrder);
|
||||
: Value(typeId)
|
||||
{
|
||||
read(buf, len, byteOrder);
|
||||
}
|
||||
|
||||
DataValue::~DataValue()
|
||||
|
||||
DataValue::~DataValue()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
int DataValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/)
|
||||
{
|
||||
// byteOrder not needed
|
||||
|
||||
Reference in New Issue
Block a user