added signed types, fixed printing for unsigned types, added more detail for some fields, other minor improvements
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3513 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -67,6 +67,7 @@ enum ENTRY_TYPE {
|
|||||||
TIFF_SBYTE,
|
TIFF_SBYTE,
|
||||||
TIFF_UNDEFINED,
|
TIFF_UNDEFINED,
|
||||||
TIFF_SSHORT,
|
TIFF_SSHORT,
|
||||||
|
TIFF_SLONG,
|
||||||
TIFF_SRATIONAL,
|
TIFF_SRATIONAL,
|
||||||
TIFF_FLOAT,
|
TIFF_FLOAT,
|
||||||
TIFF_DOUBLE
|
TIFF_DOUBLE
|
||||||
@@ -170,11 +171,11 @@ print_ifd_value(IFDEntry &entry, BFile &file, swap_action swp)
|
|||||||
case 254: // NewSubfileType
|
case 254: // NewSubfileType
|
||||||
if (entry.count == 1 && entry.fieldType == TIFF_LONG) {
|
if (entry.count == 1 && entry.fieldType == TIFF_LONG) {
|
||||||
if (entry.longval & 1)
|
if (entry.longval & 1)
|
||||||
printf("Low Res ");
|
printf("Low Res (1) ");
|
||||||
if (entry.longval & 2)
|
if (entry.longval & 2)
|
||||||
printf("Page ");
|
printf("Page (2) ");
|
||||||
if (entry.longval & 4)
|
if (entry.longval & 4)
|
||||||
printf("Mask ");
|
printf("Mask (4) ");
|
||||||
|
|
||||||
printf("(0x%.8lx)", entry.longval);
|
printf("(0x%.8lx)", entry.longval);
|
||||||
return;
|
return;
|
||||||
@@ -195,16 +196,22 @@ print_ifd_value(IFDEntry &entry, BFile &file, swap_action swp)
|
|||||||
if (entry.count == 1 && entry.fieldType == TIFF_SHORT) {
|
if (entry.count == 1 && entry.fieldType == TIFF_SHORT) {
|
||||||
switch (entry.shortvals[0]) {
|
switch (entry.shortvals[0]) {
|
||||||
case 1:
|
case 1:
|
||||||
printf("No Compression");
|
printf("No Compression (1)");
|
||||||
return;
|
return;
|
||||||
case 2:
|
case 2:
|
||||||
printf("CCITT Group 3 1-Dimensional Modified Huffman run-length encoding");
|
printf("CCITT Group 3 1-Dimensional Modified Huffman run-length encoding (2)");
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
printf("Fax Group 3 (3)");
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
printf("Fax Group 4 (4)");
|
||||||
return;
|
return;
|
||||||
case 5:
|
case 5:
|
||||||
printf("LZW");
|
printf("LZW (5)");
|
||||||
return;
|
return;
|
||||||
case 32773:
|
case 32773:
|
||||||
printf("PackBits");
|
printf("PackBits (32773)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -236,33 +243,43 @@ print_ifd_value(IFDEntry &entry, BFile &file, swap_action swp)
|
|||||||
if (entry.count == 1 && entry.fieldType == TIFF_SHORT) {
|
if (entry.count == 1 && entry.fieldType == TIFF_SHORT) {
|
||||||
switch (entry.shortvals[0]) {
|
switch (entry.shortvals[0]) {
|
||||||
case 1:
|
case 1:
|
||||||
printf("top to bottom, left to right");
|
printf("top to bottom, left to right (1)");
|
||||||
return;
|
return;
|
||||||
case 2:
|
case 2:
|
||||||
printf("top to bottom, right to left");
|
printf("top to bottom, right to left (2)");
|
||||||
return;
|
return;
|
||||||
case 3:
|
case 3:
|
||||||
printf("bottom to top, right to left");
|
printf("bottom to top, right to left (3)");
|
||||||
return;
|
return;
|
||||||
case 4:
|
case 4:
|
||||||
printf("bottom to top, left to right");
|
printf("bottom to top, left to right (4)");
|
||||||
return;
|
return;
|
||||||
case 5:
|
case 5:
|
||||||
printf("left to right, top to bottom");
|
printf("left to right, top to bottom (5)");
|
||||||
return;
|
return;
|
||||||
case 6:
|
case 6:
|
||||||
printf("right to left, top to bottom");
|
printf("right to left, top to bottom (6)");
|
||||||
return;
|
return;
|
||||||
case 7:
|
case 7:
|
||||||
printf("right to left, bottom to top");
|
printf("right to left, bottom to top (7)");
|
||||||
return;
|
return;
|
||||||
case 8:
|
case 8:
|
||||||
printf("left to right, bottom to top");
|
printf("left to right, bottom to top (8)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 278: // RowsPerStrip
|
||||||
|
{
|
||||||
|
const uint32 ksinglestrip = 0xffffffffUL;
|
||||||
|
printf("%u",
|
||||||
|
static_cast<unsigned int>(entry.longval));
|
||||||
|
if (entry.longval == ksinglestrip)
|
||||||
|
printf(" (All rows in first strip)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
case 284: // PlanarConfiguration
|
case 284: // PlanarConfiguration
|
||||||
if (entry.count == 1 && entry.fieldType == TIFF_SHORT) {
|
if (entry.count == 1 && entry.fieldType == TIFF_SHORT) {
|
||||||
if (entry.shortvals[0] == 1) {
|
if (entry.shortvals[0] == 1) {
|
||||||
@@ -315,16 +332,41 @@ print_ifd_value(IFDEntry &entry, BFile &file, swap_action swp)
|
|||||||
if (nread == 8 &&
|
if (nread == 8 &&
|
||||||
swap_data(B_UINT32_TYPE, &rational, 8, swp) == B_OK) {
|
swap_data(B_UINT32_TYPE, &rational, 8, swp) == B_OK) {
|
||||||
|
|
||||||
printf("%d / %d",
|
printf("%u / %u (offset: 0x%.8lx)",
|
||||||
static_cast<unsigned int>(rational.numerator),
|
static_cast<unsigned int>(rational.numerator),
|
||||||
static_cast<unsigned int>(rational.denominator));
|
static_cast<unsigned int>(rational.denominator),
|
||||||
|
entry.longval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (entry.fieldType == TIFF_SRATIONAL && entry.count == 1) {
|
||||||
|
struct { int32 numerator; int32 denominator; } srational;
|
||||||
|
|
||||||
|
ssize_t nread = file.ReadAt(entry.longval, &srational, 8);
|
||||||
|
if (nread == 8 &&
|
||||||
|
swap_data(B_INT32_TYPE, &srational, 8, swp) == B_OK) {
|
||||||
|
|
||||||
|
printf("%d / %d (offset: 0x%.8lx)",
|
||||||
|
static_cast<int>(srational.numerator),
|
||||||
|
static_cast<int>(srational.denominator),
|
||||||
|
entry.longval);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (entry.fieldType == TIFF_LONG && entry.count == 1) {
|
} else if (entry.fieldType == TIFF_LONG && entry.count == 1) {
|
||||||
printf("%d",
|
printf("%u",
|
||||||
static_cast<unsigned int>(entry.longval));
|
static_cast<unsigned int>(entry.longval));
|
||||||
return;
|
return;
|
||||||
|
} else if (entry.fieldType == TIFF_SLONG && entry.count == 1) {
|
||||||
|
printf("%d",
|
||||||
|
static_cast<int>(entry.longval));
|
||||||
|
return;
|
||||||
} else if (entry.fieldType == TIFF_SHORT && entry.count <= 2) {
|
} else if (entry.fieldType == TIFF_SHORT && entry.count <= 2) {
|
||||||
|
for (uint32 i = 0; i < entry.count; i++) {
|
||||||
|
if (i > 0)
|
||||||
|
printf(", ");
|
||||||
|
printf("%u", entry.shortvals[i]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else if (entry.fieldType == TIFF_SSHORT && entry.count <= 2) {
|
||||||
for (uint32 i = 0; i < entry.count; i++) {
|
for (uint32 i = 0; i < entry.count; i++) {
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
printf(", ");
|
printf(", ");
|
||||||
@@ -332,12 +374,27 @@ print_ifd_value(IFDEntry &entry, BFile &file, swap_action swp)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (entry.fieldType == TIFF_BYTE && entry.count <= 4) {
|
} else if (entry.fieldType == TIFF_BYTE && entry.count <= 4) {
|
||||||
|
for (uint32 i = 0; i < entry.count; i++) {
|
||||||
|
if (i > 0)
|
||||||
|
printf(", ");
|
||||||
|
printf("%u", entry.bytevals[i]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else if (entry.fieldType == TIFF_SBYTE && entry.count <= 4) {
|
||||||
for (uint32 i = 0; i < entry.count; i++) {
|
for (uint32 i = 0; i < entry.count; i++) {
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
printf(", ");
|
printf(", ");
|
||||||
printf("%d", entry.bytevals[i]);
|
printf("%d", entry.bytevals[i]);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
} else if (entry.fieldType == TIFF_UNDEFINED && entry.count <= 4) {
|
||||||
|
for (uint32 i = 0; i < entry.count; i++) {
|
||||||
|
if (i > 0)
|
||||||
|
printf(", ");
|
||||||
|
printf("0x%.2lx",
|
||||||
|
static_cast<unsigned long>(entry.bytevals[i]));
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -358,6 +415,7 @@ int swap_value_field(IFDEntry &entry, swap_action swp)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case TIFF_LONG:
|
case TIFF_LONG:
|
||||||
|
case TIFF_SLONG:
|
||||||
case TIFF_RATIONAL:
|
case TIFF_RATIONAL:
|
||||||
case TIFF_SRATIONAL:
|
case TIFF_SRATIONAL:
|
||||||
case TIFF_DOUBLE:
|
case TIFF_DOUBLE:
|
||||||
|
|||||||
Reference in New Issue
Block a user