[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:41:09 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=5f1d09b
The following commit has been merged in the master branch:
commit 5f1d09b6f0ba32f50c61a537ec27955c60f1eddd
Author: Andreas Huggel <ahuggel at gmx.net>
Date: Thu Feb 4 16:41:14 2010 +0000
#666: Added configuration setting to concatenate gaps between known tags in binary arrays. Needs testing and a test-case.
---
src/tiffcomposite.cpp | 8 ++----
src/tiffcomposite_int.hpp | 9 +++---
src/tiffimage.cpp | 72 ++++++++++++++++++++++++++++++++++++-----------
src/tiffvisitor.cpp | 41 +++++++++++++++++++++++----
4 files changed, 99 insertions(+), 31 deletions(-)
diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp
index 2fa2b31..8ea92f5 100644
--- a/src/tiffcomposite.cpp
+++ b/src/tiffcomposite.cpp
@@ -630,12 +630,10 @@ namespace Exiv2 {
return true;
}
- uint32_t TiffBinaryArray::addElement(uint32_t idx, const ArrayDef* def)
+ uint32_t TiffBinaryArray::addElement(uint32_t idx, const ArrayDef& def)
{
- assert(def != 0);
-
uint16_t tag = static_cast<uint16_t>(idx / cfg()->tagStep());
- int32_t sz = EXV_MIN(def->size(tag, cfg()->group_), TiffEntryBase::doSize() - idx);
+ int32_t sz = EXV_MIN(def.size(tag, cfg()->group_), TiffEntryBase::doSize() - idx);
TiffComponent::AutoPtr tc = TiffCreator::create(tag, cfg()->group_);
TiffBinaryElement* tp = dynamic_cast<TiffBinaryElement*>(tc.get());
// The assertion typically fails if a component is not configured in
@@ -1037,7 +1035,7 @@ namespace Exiv2 {
uint32_t TiffBinaryElement::doCount() const
{
- return elDef_->count_;
+ return elDef_.count_;
}
uint32_t TiffComponent::write(IoWrapper& ioWrapper,
diff --git a/src/tiffcomposite_int.hpp b/src/tiffcomposite_int.hpp
index 2f2859e..918ed89 100644
--- a/src/tiffcomposite_int.hpp
+++ b/src/tiffcomposite_int.hpp
@@ -1264,6 +1264,7 @@ namespace Exiv2 {
CryptFct cryptFct_; //!< Crypt function, 0 if not used
bool hasSize_; //!< If true, first tag is the size element
bool hasFillers_; //!< If true, write all defined tags
+ bool concat_; //!< If true, concatenate gaps between defined tags to single tags
ArrayDef elDefaultDef_; //!< Default element
};
@@ -1302,7 +1303,7 @@ namespace Exiv2 {
//! @name Manipulators
//@{
//! Add an element to the binary array, return the size of the element
- uint32_t addElement(uint32_t idx, const ArrayDef* def);
+ uint32_t addElement(uint32_t idx, const ArrayDef& def);
/*!
@brief Setup cfg and def for the component, in case of a complex binary array.
Else do nothing. Return true if the initialization succeeded, else false.
@@ -1413,7 +1414,7 @@ namespace Exiv2 {
/*!
@brief Set the array definition for this element.
*/
- void setElDef(const ArrayDef* def) { elDef_ = def; }
+ void setElDef(const ArrayDef& def) { elDef_ = def; }
/*!
@brief Set the byte order of this element.
*/
@@ -1425,7 +1426,7 @@ namespace Exiv2 {
/*!
@brief Return the array definition of this element.
*/
- const ArrayDef* elDef() const { return elDef_; }
+ const ArrayDef* elDef() const { return &elDef_; }
/*!
@brief Return the byte order of this element.
*/
@@ -1467,7 +1468,7 @@ namespace Exiv2 {
private:
// DATA
- const ArrayDef* elDef_; //!< Pointer to the array element definition
+ ArrayDef elDef_; //!< The array element definition
ByteOrder elByteOrder_; //!< Byte order to read/write the element
}; // class TiffBinaryElement
diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp
index 4f67c83..ae501cc 100644
--- a/src/tiffimage.cpp
+++ b/src/tiffimage.cpp
@@ -289,6 +289,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
true, // With size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Canon Camera Settings binary array - definition
@@ -304,6 +305,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
true, // With size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
@@ -315,6 +317,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
@@ -326,6 +329,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
true, // With size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
@@ -337,6 +341,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
@@ -348,6 +353,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
true, // Has a size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttSignedShort, 1 }
};
//! Canon File Info binary array - definition
@@ -363,6 +369,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Vibration Reduction binary array - definition
@@ -379,6 +386,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Picture Control binary array - definition
@@ -386,6 +394,15 @@ namespace Exiv2 {
{ 0, ttUndefined, 4 }, // Version
{ 4, ttAsciiString, 20 },
{ 24, ttAsciiString, 20 },
+ { 48, ttUnsignedByte, 1 },
+ { 49, ttUnsignedByte, 1 },
+ { 50, ttUnsignedByte, 1 },
+ { 51, ttUnsignedByte, 1 },
+ { 52, ttUnsignedByte, 1 },
+ { 53, ttUnsignedByte, 1 },
+ { 54, ttUnsignedByte, 1 },
+ { 55, ttUnsignedByte, 1 },
+ { 56, ttUnsignedByte, 1 },
{ 57, ttUnsignedByte, 1 } // The array contains 58 bytes
};
@@ -397,11 +414,13 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon World Time binary array - definition
extern const ArrayDef nikonWtDef[] = {
{ 0, ttSignedShort, 1 },
+ { 2, ttUnsignedByte, 1 },
{ 3, ttUnsignedByte, 1 }
};
@@ -413,11 +432,14 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon ISO info binary array - definition
extern const ArrayDef nikonIiDef[] = {
+ { 0, ttUnsignedByte, 1 },
{ 4, ttUnsignedShort, 1 },
+ { 6, ttUnsignedByte, 1 },
{ 10, ttUnsignedShort, 1 },
{ 13, ttUnsignedByte, 1 } // The array contains 14 bytes
};
@@ -430,10 +452,13 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Auto Focus binary array - definition
extern const ArrayDef nikonAfDef[] = {
+ { 0, ttUnsignedByte, 1 },
+ { 1, ttUnsignedByte, 1 },
{ 2, ttUnsignedShort, 1 } // The array contains 4 bytes
};
@@ -445,6 +470,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Shot Info binary array - definition 1 (D80)
@@ -461,12 +487,14 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Shot Info binary array - definition 2 (D40)
extern const ArrayDef nikonSi2Def[] = {
{ 0, ttUndefined, 4 }, // Version
{ 582, ttUnsignedLong, 1 }, // ShutterCount
+ { 738, ttUnsignedByte, 1 },
{ 1112, ttUnsignedByte, 1 } // The array contains 1113 bytes
};
//! Nikon Shot Info binary array - configuration 3 (D300a)
@@ -477,11 +505,13 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Shot Info binary array - definition 3 (D300a)
extern const ArrayDef nikonSi3Def[] = {
{ 0, ttUndefined, 4 }, // Version
+ { 604, ttUnsignedByte, 1 }, // ISO
{ 633, ttUnsignedLong, 1 }, // ShutterCount
{ 721, ttUnsignedShort, 1 }, // AFFineTuneAdj
{ 814, ttUndefined, 4478 } // The array contains 5291 bytes
@@ -494,6 +524,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Shot Info binary array - definition 4 (D300b)
@@ -511,6 +542,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
false, // Write all tags (don't know how many)
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Shot Info binary array - definition 5 (ver 01.xx and ver 02.xx)
@@ -518,7 +550,11 @@ namespace Exiv2 {
{ 0, ttUndefined, 4 }, // Version
{ 106, ttUnsignedLong, 1 }, // ShutterCount
{ 110, ttUnsignedLong, 1 }, // DeletedImageCount
+ { 117, ttUnsignedByte, 1 }, // VibrationReduction
+ { 130, ttUnsignedByte, 1 }, // VibrationReduction1
{ 343, ttUndefined, 2 }, // ShutterCount
+ { 430, ttUnsignedByte, 1 }, // VibrationReduction2
+ { 598, ttUnsignedByte, 1 }, // ISO
{ 630, ttUnsignedLong, 1 } // ShutterCount
};
//! Nikon Shot Info binary array - configuration 6 (ver 01.xx)
@@ -529,6 +565,7 @@ namespace Exiv2 {
notEncrypted, // Encryption function
false, // No size element
false, // Write all tags (don't know how many)
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Lens Data configurations and definitions
@@ -549,6 +586,7 @@ namespace Exiv2 {
notEncrypted, // Encryption function
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Lens Data binary array - configuration 2
@@ -559,6 +597,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
true, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Lens Data binary array - configuration 3
@@ -569,6 +608,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
true, // Write all tags
+ false, // Don't concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
//! Nikon Lens Data binary array - definition
@@ -590,6 +630,7 @@ namespace Exiv2 {
notEncrypted, // Encryption function
false, // No size element
false, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Nikon Color Balance binary array - configuration 2
@@ -600,6 +641,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
false, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Nikon Color Balance binary array - configuration 2a
@@ -610,6 +652,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
false, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Nikon Color Balance binary array - configuration 2b
@@ -620,6 +663,7 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
false, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Nikon Color Balance binary array - configuration 3
@@ -630,6 +674,7 @@ namespace Exiv2 {
notEncrypted, // Encryption function
false, // No size element
false, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Nikon Color Balance binary array - configuration 4
@@ -640,51 +685,42 @@ namespace Exiv2 {
nikonCrypt, // Encryption function
false, // No size element
false, // Write all tags
+ true, // Concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Nikon Color Balance binary array - definition 1 (D100)
extern const ArrayDef nikonCb1Def[] = {
{ 0, ttUndefined, 4 }, // Version
- { 4, ttUnsignedShort, 34 }, // Unknown
- { 72, ttUnsignedShort, 4 }, // Color balance levels
- { 80, ttUnsignedShort, 9999 } // Unknown
+ { 72, ttUnsignedShort, 4 } // Color balance levels
};
//! Nikon Color Balance binary array - definition 2 (D2H)
extern const ArrayDef nikonCb2Def[] = {
{ 0, ttUndefined, 4 }, // Version
- { 4, ttUnsignedShort, 3 }, // Unknown
- { 10, ttUnsignedShort, 4 }, // Color balance levels
- { 18, ttUnsignedShort, 9999 } // Unknown
+ { 10, ttUnsignedShort, 4 } // Color balance levels
};
//! Nikon Color Balance binary array - definition 2a (D50)
extern const ArrayDef nikonCb2aDef[] = {
{ 0, ttUndefined, 4 }, // Version
- { 4, ttUnsignedShort, 7 }, // Unknown
- { 18, ttUnsignedShort, 4 }, // Color balance levels
- { 26, ttUnsignedShort, 9999 } // Unknown
+ { 18, ttUnsignedShort, 4 } // Color balance levels
};
//! Nikon Color Balance binary array - definition 2b (D2X=0204,D2Hs=0206,D200=0207,D40=0208)
extern const ArrayDef nikonCb2bDef[] = {
{ 0, ttUndefined, 4 }, // Version
{ 4, ttUnsignedShort, 140 }, // Unknown
{284, ttUnsignedShort, 3 }, // Unknown (encrypted)
- {290, ttUnsignedShort, 4 }, // Color balance levels
- {298, ttUnsignedShort, 9999 } // Unknown (encrypted)
+ {290, ttUnsignedShort, 4 } // Color balance levels
};
//! Nikon Color Balance binary array - definition 3 (D70)
extern const ArrayDef nikonCb3Def[] = {
{ 0, ttUndefined, 4 }, // Version
- { 4, ttUnsignedShort, 8 }, // Unknown
- { 20, ttUnsignedShort, 4 }, // Color balance levels
- { 28, ttUnsignedShort, 9999 } // Unknown
+ { 20, ttUnsignedShort, 4 } // Color balance levels
};
//! Nikon Color Balance binary array - definition 4 (D3)
extern const ArrayDef nikonCb4Def[] = {
{ 0, ttUndefined, 4 }, // Version
{ 4, ttUnsignedShort, 140 }, // Unknown
{284, ttUnsignedShort, 5 }, // Unknown (encrypted)
- {294, ttUnsignedShort, 4 }, // Color balance levels
- {302, ttUnsignedShort, 9999 } // Unknown (encrypted)
+ {294, ttUnsignedShort, 4 } // Color balance levels
};
//! Nikon Color Balance configurations and definitions
extern const ArraySet nikonCbSet[] = {
@@ -704,6 +740,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedLong, 1 }
};
@@ -715,6 +752,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedLong, 1 }
};
@@ -726,6 +764,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Minolta 7D Camera Settings binary array - definition
@@ -742,6 +781,7 @@ namespace Exiv2 {
notEncrypted, // Not encrypted
false, // No size element
false, // No fillers
+ false, // Don't concatenate gaps
{ 0, ttUnsignedShort, 1 }
};
//! Minolta 5D Camera Settings binary array - definition
diff --git a/src/tiffvisitor.cpp b/src/tiffvisitor.cpp
index 0e41d11..199ad43 100644
--- a/src/tiffvisitor.cpp
+++ b/src/tiffvisitor.cpp
@@ -1442,10 +1442,10 @@ namespace Exiv2 {
if (object->TiffEntryBase::doSize() == 0) return;
if (!object->initialize(pRoot_)) return;
- const ArrayDef* defs = object->def();
- const ArrayDef* def = &object->cfg()->elDefaultDef_;
- const CryptFct cryptFct = object->cfg()->cryptFct_;
+ const ArrayCfg* cfg = object->cfg();
+
+ const CryptFct cryptFct = cfg->cryptFct_;
if (cryptFct != 0) {
const byte* pData = object->pData();
int32_t size = object->TiffEntryBase::doSize();
@@ -1453,12 +1453,41 @@ namespace Exiv2 {
if (buf.size_ > 0) object->setData(buf);
}
+ const ArrayDef* defs = object->def();
+ const ArrayDef* defsEnd = defs + object->defSize();
+ const ArrayDef* def = &cfg->elDefaultDef_;
+ ArrayDef gap = *def;
+
for (uint32_t idx = 0; idx < object->TiffEntryBase::doSize(); ) {
if (defs) {
- def = std::find(defs, defs + object->defSize(), idx);
- if (def == defs + object->defSize()) def = &object->cfg()->elDefaultDef_;
+ def = std::find(defs, defsEnd, idx);
+ if (def == defsEnd) {
+ if (cfg->concat_) {
+ // Determine gap-size
+ const ArrayDef* xdef = defs;
+ for (; xdef != defsEnd && xdef->idx_ <= idx; ++xdef) {}
+ uint32_t gapSize = 0;
+ if (xdef != defsEnd && xdef->idx_ > idx) {
+ gapSize = xdef->idx_ - idx;
+ }
+ else {
+ gapSize = object->TiffEntryBase::doSize() - idx;
+ }
+ gap.idx_ = idx;
+ gap.tiffType_ = cfg->elDefaultDef_.tiffType_;
+ gap.count_ = gapSize / cfg->tagStep();
+ if (gap.count_ * cfg->tagStep() != gapSize) {
+ gap.tiffType_ = ttUndefined;
+ gap.count_ = gapSize;
+ }
+ def = ⪆
+ }
+ else {
+ def = &cfg->elDefaultDef_;
+ }
+ }
}
- idx += object->addElement(idx, def); // idx may be different from def->idx_
+ idx += object->addElement(idx, *def); // idx may be different from def->idx_
}
} // TiffReader::visitBinaryArray
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list