Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/Metadata/TagConversion.cpp view on Meta::CPAN
return "Unknown";
}
}
break;
case TAG_COMPONENTS_CONFIGURATION:
{
const char *componentStrings[7] = {"", "Y", "Cb", "Cr", "R", "G", "B"};
BYTE *pvalue = (BYTE*)FreeImage_GetTagValue(tag);
for(DWORD i = 0; i < MIN((DWORD)4, FreeImage_GetTagCount(tag)); i++) {
int j = pvalue[i];
if(j > 0 && j < 7)
buffer += componentStrings[j];
}
return buffer.c_str();
}
break;
case TAG_COMPRESSED_BITS_PER_PIXEL:
{
FIRational r(tag);
buffer = r.toString();
if(buffer == "1")
buffer += " bit/pixel";
else
buffer += " bits/pixel";
return buffer.c_str();
}
break;
case TAG_X_RESOLUTION:
case TAG_Y_RESOLUTION:
case TAG_FOCAL_PLANE_X_RES:
case TAG_FOCAL_PLANE_Y_RES:
case TAG_BRIGHTNESS_VALUE:
case TAG_EXPOSURE_BIAS_VALUE:
{
FIRational r(tag);
buffer = r.toString();
return buffer.c_str();
}
break;
case TAG_RESOLUTION_UNIT:
case TAG_FOCAL_PLANE_UNIT:
{
unsigned short resolutionUnit = *((unsigned short *)FreeImage_GetTagValue(tag));
switch (resolutionUnit) {
case 1:
return "(No unit)";
case 2:
return "inches";
case 3:
return "cm";
default:
break;
}
}
break;
case TAG_YCBCR_POSITIONING:
{
unsigned short yCbCrPosition = *((unsigned short *)FreeImage_GetTagValue(tag));
switch (yCbCrPosition) {
case 1:
return "Center of pixel array";
case 2:
return "Datum point";
default:
break;
}
}
break;
case TAG_EXPOSURE_TIME:
{
FIRational r(tag);
buffer = r.toString();
buffer += " sec";
return buffer.c_str();
}
break;
case TAG_SHUTTER_SPEED_VALUE:
{
FIRational r(tag);
LONG apexValue = r.longValue();
LONG apexPower = 1 << apexValue;
sprintf(format, "1/%d sec", (int)apexPower);
buffer += format;
return buffer.c_str();
}
break;
case TAG_APERTURE_VALUE:
case TAG_MAX_APERTURE_VALUE:
{
FIRational r(tag);
double apertureApex = r.doubleValue();
double rootTwo = sqrt((double)2);
double fStop = pow(rootTwo, apertureApex);
sprintf(format, "F%.1f", fStop);
buffer += format;
return buffer.c_str();
}
break;
case TAG_FNUMBER:
{
FIRational r(tag);
double fnumber = r.doubleValue();
sprintf(format, "F%.1f", fnumber);
buffer += format;
return buffer.c_str();
}
break;
case TAG_FOCAL_LENGTH:
{
FIRational r(tag);
double focalLength = r.doubleValue();
( run in 0.341 second using v1.01-cache-2.11-cpan-9bca49b1385 )