#ifndef _AFNI_RENDER_HEADER_
#define _AFNI_RENDER_HEADER_
/*****************************************************************************
This software is copyrighted and owned by the Medical College of Wisconsin.
See the file README.Copyright for details.
******************************************************************************/
#include "mrilib.h"
#include "volpack.h"
/*============================================================================
AREN = AFNI Renderer, a set of routines for volume rendering 3D bricks.
Built on top of VolPack, by Philippe Lacroute.
==============================================================================*/
/*--- prototypes ---*/
extern void * new_AREN_renderer(void) ;
extern void destroy_AREN_renderer( void * ) ;
extern int AREN_set_graybrick( void * , MRI_IMAGE * ) ;
extern int AREN_set_opabrick ( void * , MRI_IMAGE * ) ;
extern int AREN_set_rgbbricks( void * , MRI_IMAGE * , MRI_IMAGE * , MRI_IMAGE * ) ;
extern void AREN_set_viewpoint( void * , float , float ) ;
extern void AREN_set_size ( void * , float , float , float ) ;
extern MRI_IMAGE * AREN_render( void * , int ) ;
extern void AREN_be_verbose( void * ) ;
extern void AREN_be_quiet ( void * ) ;
/*--- typedefs, etc. ---*/
typedef struct {
unsigned short rgb ; /* packed into 15 bits */
unsigned short alpha ; /* opacity */
} rgbvox ;
#define EIGHT_TO_FIVE(z) ((z) >> 3) /* maps 0..255 into 0..31 */
#define FIVE_TO_EIGHT(z) ((z) << 3) /* maps 0..31 into 0..255 */
#define FIVE_to_short(a,b,c) ((a)<<10 | (b)<<5 | (c))
#define TFSINV 0.00390625
#define TTINV 0.03125
#define TFFINV (1.0/255.0)
#define TOINV (1.0/31.0)
#define SHORT_to_rrr(s) TT_TO_ZO( ((s) & 0x7c00) >> 10 )
#define SHORT_to_ggg(s) TT_TO_ZO( ((s) & 0x03e0) >> 5 )
#define SHORT_to_bbb(s) TT_TO_ZO( ((s) & 0x001f) )
#define SHORT_isgray(s) ( ( ((s) & 0x7c00) >> 10 == ((s) & 0x03e0) >> 5 ) && \
( ((s) & 0x03e0) >> 5 == ((s) & 0x001f) ) )
#define MAX_CDIM 32
#define MAX_GRAYS 256
#define MAX_COLORS 32768 /* = 32 * 32 * 32 */
#define TOT_COLORS (MAX_COLORS+MAX_GRAYS)
extern void init_AREN_colortable(void) ;
/*---------------------------*/
#define AREN_TYPE 9707312
typedef struct {
int type ;
vpContext * vpc ;
int nx,ny,nz , verbose , newdata,newvox ;
float theta,phi , sx,sy,sz ;
MRI_IMAGE * grim , * rim , * gim , * bim , * opim ; /* inputs */
rgbvox * vox ; /* encoded color + opacity */
} AREN_stuff ;
#define ISVALID_AREN(ah) ( (ah) != NULL && (ah)->type == AREN_TYPE )
#endif /* _AFNI_RENDER_HEADER_ */
syntax highlighted by Code2HTML, v. 0.9.1