You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
|
|
#include "bigtiffimage.hpp"
|
|
|
|
|
|
|
|
|
|
|
|
namespace Exiv2
|
|
|
|
{
|
|
|
|
|
|
|
|
namespace
|
|
|
|
{
|
|
|
|
class BigTiffImage: public Image
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
BigTiffImage(BasicIo::AutoPtr io): Image(ImageType::bigtiff, mdExif, io) {}
|
|
|
|
|
|
|
|
virtual ~BigTiffImage() {}
|
|
|
|
|
|
|
|
// overrides
|
|
|
|
void readMetadata()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void writeMetadata()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string mimeType() const
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Image::AutoPtr newBigTiffInstance(BasicIo::AutoPtr io, bool)
|
|
|
|
{
|
|
|
|
return Image::AutoPtr(new BigTiffImage(io));
|
|
|
|
}
|
|
|
|
|
|
|
|
bool isBigTiffType(BasicIo& io, bool)
|
|
|
|
{
|
|
|
|
byte header[2];
|
|
|
|
io.read(header, 2);
|
|
|
|
|
|
|
|
ByteOrder byteOrder = invalidByteOrder;
|
|
|
|
if (header[0] == 'I' && header[1] == 'I')
|
|
|
|
byteOrder = littleEndian;
|
|
|
|
else if (header[0] == 'M' && header[1] == 'M')
|
|
|
|
byteOrder = bigEndian;
|
|
|
|
|
|
|
|
bool isBigTiff = false;
|
|
|
|
if (byteOrder != invalidByteOrder)
|
|
|
|
{
|
|
|
|
byte version[2];
|
|
|
|
io.read(version, 2);
|
|
|
|
|
|
|
|
const uint16_t magic = getUShort(version, byteOrder);
|
|
|
|
|
|
|
|
isBigTiff = magic == 0x2A || magic == 0x2B;
|
|
|
|
}
|
|
|
|
|
|
|
|
return isBigTiff;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|