forked from bartvdbraak/blender
Suport function for Collada exporter: after a generated image was stored to disk, the new filetype was not always recognized.
This commit is contained in:
parent
b0371f053c
commit
0fee1a3c0b
@ -1212,43 +1212,46 @@ void BKE_imformat_defaults(ImageFormatData *im_format)
|
|||||||
|
|
||||||
void BKE_imbuf_to_image_format(struct ImageFormatData *im_format, const ImBuf *imbuf)
|
void BKE_imbuf_to_image_format(struct ImageFormatData *im_format, const ImBuf *imbuf)
|
||||||
{
|
{
|
||||||
|
int ftype = imbuf->ftype & ~IB_CUSTOM_FLAGS_MASK;
|
||||||
|
int custom_flags = imbuf->ftype & IB_CUSTOM_FLAGS_MASK;
|
||||||
|
|
||||||
BKE_imformat_defaults(im_format);
|
BKE_imformat_defaults(im_format);
|
||||||
|
|
||||||
/* file type */
|
/* file type */
|
||||||
|
|
||||||
if (imbuf->ftype == IMAGIC)
|
if (ftype == IMAGIC)
|
||||||
im_format->imtype = R_IMF_IMTYPE_IRIS;
|
im_format->imtype = R_IMF_IMTYPE_IRIS;
|
||||||
|
|
||||||
#ifdef WITH_HDR
|
#ifdef WITH_HDR
|
||||||
else if (imbuf->ftype == RADHDR)
|
else if (ftype == RADHDR)
|
||||||
im_format->imtype = R_IMF_IMTYPE_RADHDR;
|
im_format->imtype = R_IMF_IMTYPE_RADHDR;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
else if (imbuf->ftype == PNG)
|
else if (ftype == PNG)
|
||||||
im_format->imtype = R_IMF_IMTYPE_PNG;
|
im_format->imtype = R_IMF_IMTYPE_PNG;
|
||||||
|
|
||||||
#ifdef WITH_DDS
|
#ifdef WITH_DDS
|
||||||
else if (imbuf->ftype == DDS)
|
else if (ftype == DDS)
|
||||||
im_format->imtype = R_IMF_IMTYPE_DDS;
|
im_format->imtype = R_IMF_IMTYPE_DDS;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
else if (imbuf->ftype == BMP)
|
else if (ftype == BMP)
|
||||||
im_format->imtype = R_IMF_IMTYPE_BMP;
|
im_format->imtype = R_IMF_IMTYPE_BMP;
|
||||||
|
|
||||||
#ifdef WITH_TIFF
|
#ifdef WITH_TIFF
|
||||||
else if (imbuf->ftype & TIF) {
|
else if (ftype == TIF) {
|
||||||
im_format->imtype = R_IMF_IMTYPE_TIFF;
|
im_format->imtype = R_IMF_IMTYPE_TIFF;
|
||||||
if (imbuf->ftype & TIF_16BIT)
|
if (custom_flags & TIF_16BIT)
|
||||||
im_format->depth = R_IMF_CHAN_DEPTH_16;
|
im_format->depth = R_IMF_CHAN_DEPTH_16;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_OPENEXR
|
#ifdef WITH_OPENEXR
|
||||||
else if (imbuf->ftype & OPENEXR) {
|
else if (ftype == OPENEXR) {
|
||||||
im_format->imtype = R_IMF_IMTYPE_OPENEXR;
|
im_format->imtype = R_IMF_IMTYPE_OPENEXR;
|
||||||
if (imbuf->ftype & OPENEXR_HALF)
|
if (custom_flags & OPENEXR_HALF)
|
||||||
im_format->depth = R_IMF_CHAN_DEPTH_16;
|
im_format->depth = R_IMF_CHAN_DEPTH_16;
|
||||||
if (imbuf->ftype & OPENEXR_COMPRESS)
|
if (custom_flags & OPENEXR_COMPRESS)
|
||||||
im_format->exr_codec = R_IMF_EXR_CODEC_ZIP; // Can't determine compression
|
im_format->exr_codec = R_IMF_EXR_CODEC_ZIP; // Can't determine compression
|
||||||
if (imbuf->zbuf_float)
|
if (imbuf->zbuf_float)
|
||||||
im_format->flag |= R_IMF_FLAG_ZBUF;
|
im_format->flag |= R_IMF_FLAG_ZBUF;
|
||||||
@ -1256,35 +1259,35 @@ void BKE_imbuf_to_image_format(struct ImageFormatData *im_format, const ImBuf *i
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_CINEON
|
#ifdef WITH_CINEON
|
||||||
else if (imbuf->ftype == CINEON)
|
else if (ftype == CINEON)
|
||||||
im_format->imtype = R_IMF_IMTYPE_CINEON;
|
im_format->imtype = R_IMF_IMTYPE_CINEON;
|
||||||
else if (imbuf->ftype == DPX)
|
else if (ftype == DPX)
|
||||||
im_format->imtype = R_IMF_IMTYPE_DPX;
|
im_format->imtype = R_IMF_IMTYPE_DPX;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
else if (imbuf->ftype == TGA) {
|
else if (ftype == TGA) {
|
||||||
im_format->imtype = R_IMF_IMTYPE_TARGA;
|
im_format->imtype = R_IMF_IMTYPE_TARGA;
|
||||||
}
|
}
|
||||||
else if (imbuf->ftype == RAWTGA) {
|
else if (ftype == RAWTGA) {
|
||||||
im_format->imtype = R_IMF_IMTYPE_RAWTGA;
|
im_format->imtype = R_IMF_IMTYPE_RAWTGA;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_OPENJPEG
|
#ifdef WITH_OPENJPEG
|
||||||
else if (imbuf->ftype & JP2) {
|
else if (ftype & JP2) {
|
||||||
im_format->imtype = R_IMF_IMTYPE_JP2;
|
im_format->imtype = R_IMF_IMTYPE_JP2;
|
||||||
im_format->quality = imbuf->ftype & ~JPG_MSK;
|
im_format->quality = custom_flags & ~JPG_MSK;
|
||||||
|
|
||||||
if (imbuf->ftype & JP2_16BIT)
|
if (ftype & JP2_16BIT)
|
||||||
im_format->depth = R_IMF_CHAN_DEPTH_16;
|
im_format->depth = R_IMF_CHAN_DEPTH_16;
|
||||||
else if (imbuf->ftype & JP2_12BIT)
|
else if (ftype & JP2_12BIT)
|
||||||
im_format->depth = R_IMF_CHAN_DEPTH_12;
|
im_format->depth = R_IMF_CHAN_DEPTH_12;
|
||||||
|
|
||||||
if (imbuf->ftype & JP2_YCC)
|
if (ftype & JP2_YCC)
|
||||||
im_format->jp2_flag |= R_IMF_JP2_FLAG_YCC;
|
im_format->jp2_flag |= R_IMF_JP2_FLAG_YCC;
|
||||||
|
|
||||||
if (imbuf->ftype & JP2_CINE) {
|
if (ftype & JP2_CINE) {
|
||||||
im_format->jp2_flag |= R_IMF_JP2_FLAG_CINE_PRESET;
|
im_format->jp2_flag |= R_IMF_JP2_FLAG_CINE_PRESET;
|
||||||
if (imbuf->ftype & JP2_CINE_48FPS)
|
if (ftype & JP2_CINE_48FPS)
|
||||||
im_format->jp2_flag |= R_IMF_JP2_FLAG_CINE_48;
|
im_format->jp2_flag |= R_IMF_JP2_FLAG_CINE_48;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1292,7 +1295,7 @@ void BKE_imbuf_to_image_format(struct ImageFormatData *im_format, const ImBuf *i
|
|||||||
|
|
||||||
else {
|
else {
|
||||||
im_format->imtype = R_IMF_IMTYPE_JPEG90;
|
im_format->imtype = R_IMF_IMTYPE_JPEG90;
|
||||||
im_format->quality = imbuf->ftype & ~JPG_MSK;
|
im_format->quality = custom_flags & ~JPG_MSK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* planes */
|
/* planes */
|
||||||
|
@ -165,8 +165,10 @@ typedef struct ImBuf {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The bit flag is stored in the ImBuf.ftype variable.
|
* The bit flag is stored in the ImBuf.ftype variable.
|
||||||
* Note that the lower 10 bits is used for storing custom flags
|
* Note that the lower 10 bits is used for storing custom flags
|
||||||
*/
|
*/
|
||||||
|
#define IB_CUSTOM_FLAGS_MASK 0x3ff
|
||||||
|
|
||||||
#define PNG (1 << 30)
|
#define PNG (1 << 30)
|
||||||
#define TGA (1 << 28)
|
#define TGA (1 << 28)
|
||||||
#define JPG (1 << 27)
|
#define JPG (1 << 27)
|
||||||
|
Loading…
Reference in New Issue
Block a user