/* convert from an t_Image structure to an _image structure */ _image *epidaureLib2_image(const t_ImagePtr epi) { _image *img; img = _initImage(); img->xdim = epi->tx; img->ydim = epi->ty; img->zdim = epi->tz; img->vdim = 1; img->data = (void *) epi->buf; switch(epi->type) { case TYPEIM_256: img->wdim = 1; img->wordKind = WK_FIXED; img->sign = SGN_UNSIGNED; break; case TYPEIM_16B: img->wdim = 2; img->wordKind = WK_FIXED; img->sign = SGN_UNSIGNED; break; case TYPEIM_S16B: img->wdim = 2; img->wordKind = WK_FIXED; img->sign = SGN_SIGNED; break; case TYPEIM_FLOAT: img->wdim = 4; img->wordKind = WK_FLOAT; break; default: break; } return img; }
int main() { volatile _image* i = _initImage(); bool ok = (i != 0); _freeImage(const_cast<_image*>(i)); return ok ? 0 : 1; }
/* convert from an inrimage structure to an _image structure */ _image *inrimage2_image(const inrimage *inr) { _image *img; img = _initImage(); img->xdim = inr->ncols; img->ydim = inr->nrows; img->zdim = inr->nplanes; img->vdim = inr->vdim; img->vx = (float) inr->vx; img->vy = (float) inr->vy; img->vz = (float) inr->vz; img->data = inr->data; switch(inr->type) { case WT_UNSIGNED_CHAR: case WT_RGB: case WT_RGBA: img->wdim = 1; img->wordKind = WK_FIXED; img->sign = SGN_UNSIGNED; break; case WT_UNSIGNED_SHORT: img->wdim = 2; img->wordKind = WK_FIXED; img->sign = SGN_UNSIGNED; break; case WT_SIGNED_SHORT: img->wdim = 2; img->wordKind = WK_FIXED; img->sign = SGN_SIGNED; break; case WT_UNSIGNED_INT: img->wdim = 4; img->wordKind = WK_FIXED; img->sign = SGN_UNSIGNED; break; case WT_SIGNED_INT: img->wdim = 4; img->wordKind = WK_FIXED; img->sign = SGN_SIGNED; break; case WT_UNSIGNED_LONG: img->wdim = 8; img->wordKind = WK_FIXED; img->sign = SGN_UNSIGNED; break; case WT_SIGNED_LONG: img->wdim = 8; img->wordKind = WK_FIXED; img->sign = SGN_SIGNED; break; case WT_FLOAT: img->wdim = 4; img->wordKind = WK_FLOAT; break; case WT_FLOAT_VECTOR: img->wdim = 4; img->wordKind = WK_FLOAT; if(inr->varray) img->vectMode = VM_NON_INTERLACED; else img->vectMode = VM_INTERLACED; break; case WT_DOUBLE: img->wdim = 8; img->wordKind = WK_FLOAT; break; case WT_DOUBLE_VECTOR: img->wdim = 8; img->wordKind = WK_FLOAT; if(inr->varray) img->vectMode = VM_NON_INTERLACED; else img->vectMode = VM_INTERLACED; break; } return img; }
int VT_WriteInrimageWithName( vt_image *image, char *name ) { char *proc = "VT_WriteImage"; _image *inr = NULL; if ( _VT_DEBUG_ ) { fprintf( stderr, "%s: uses LIBINRIMAGE routines\n", proc ); } if ( _flag_init_readers == 0 ) { _init_readers(); _flag_init_readers = 1; } inr = _initImage(); switch ( image->type ) { case SCHAR : inr->wordKind = WK_FIXED; inr->sign = SGN_SIGNED; inr->wdim = sizeof( char ); break; case UCHAR : inr->wordKind = WK_FIXED; inr->sign = SGN_UNSIGNED; inr->wdim = sizeof( char ); break; case SSHORT : inr->wordKind = WK_FIXED; inr->sign = SGN_SIGNED; inr->wdim = sizeof( short int ); break; case USHORT : inr->wordKind = WK_FIXED; inr->sign = SGN_UNSIGNED; inr->wdim = sizeof( short int ); break; case FLOAT : inr->wordKind = WK_FLOAT; inr->sign = SGN_UNKNOWN; inr->wdim = sizeof( float ); break; case DOUBLE : inr->wordKind = WK_FLOAT; inr->sign = SGN_UNKNOWN; inr->wdim = sizeof( double ); break; case SINT : inr->wordKind = WK_FIXED; inr->sign = SGN_SIGNED; inr->wdim = sizeof( int ); break; case UINT : inr->wordKind = WK_FIXED; inr->sign = SGN_UNSIGNED; inr->wdim = sizeof( int ); break; default : free(inr); return 0; } inr->xdim = image->dim.x; inr->ydim = image->dim.y; inr->zdim = image->dim.z; inr->vdim = image->dim.v; inr->vx = image->siz.x; inr->vy = image->siz.y; inr->vz = image->siz.z; inr->tx = image->off.x; inr->ty = image->off.y; inr->tz = image->off.z; inr->rx = image->rot.x; inr->ry = image->rot.y; inr->rz = image->rot.z; inr->cx = image->ctr.x; inr->cy = image->ctr.y; inr->cz = image->ctr.z; inr->nuser = image->nuser; inr->user = image->user; inr->data = image->buf; if ( _writeImage( inr, name ) == -1 ) { if ( _VT_VERBOSE_ ) fprintf( stderr, "%s: unable to write image '%s'", proc, image->name ); free( inr ); return 0; } free( inr ); return 1; }