Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/FreeImage/PluginIFF.cpp view on Meta::CPAN
for (unsigned x = 0; x < width; x++) {
for (unsigned n = 0; n < planes; n++) {
BYTE bit = (BYTE)( src[n * plane_size + (x / 8)] >> ((x^7) & 7) );
dest[x * pixel_size + (n / 8)] |= (bit & 1) << (n & 7);
}
}
#if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_BGR
if (depth == 24) {
for (unsigned x = 0; x < width; ++x){
INPLACESWAP(dest[x * 3], dest[x * 3 + 2]);
}
}
#endif
}
free(src);
return dib;
}
}
// Every odd-length chunk is followed by a 0 pad byte. This pad
// byte is not counted in ch_size.
if (ch_size & 1) {
ch_size++;
ch_end++;
}
io->seek_proc(handle, ch_end - io->tell_proc(handle), SEEK_CUR);
size -= ch_size + 8;
}
if (dib)
FreeImage_Unload(dib);
}
return 0;
}
// ==========================================================
// Init
// ==========================================================
void DLL_CALLCONV
InitIFF(Plugin *plugin, int format_id) {
s_format_id = format_id;
plugin->format_proc = Format;
plugin->description_proc = Description;
plugin->extension_proc = Extension;
plugin->regexpr_proc = RegExpr;
plugin->open_proc = NULL;
plugin->close_proc = NULL;
plugin->pagecount_proc = NULL;
plugin->pagecapability_proc = NULL;
plugin->load_proc = Load;
plugin->save_proc = NULL;
plugin->validate_proc = Validate;
plugin->mime_proc = MimeType;
plugin->supports_export_bpp_proc = SupportsExportDepth;
plugin->supports_export_type_proc = SupportsExportType;
plugin->supports_icc_profiles_proc = NULL;
}
( run in 0.464 second using v1.01-cache-2.11-cpan-d7f47b0818f )