Hi Peter,
Here's some sample code from the TIFF module, where it is creating the "info" structure:
static IDL_STRUCT_TAG_DEF s_tags[] = {
{ "CHANNELS", 0, (void *) IDL_TYP_LONG },
{ "DIMENSIONS", dim_dims, (void *) IDL_TYP_LONG },
{ "HAS_PALETTE", 0, (void *) IDL_TYP_INT },
{ "IMAGE_INDEX", 0, (void *) IDL_TYP_LONG },
{ "NUM_IMAGES", 0, (void *) IDL_TYP_LONG },
{ "PIXEL_TYPE", 0, (void *) IDL_TYP_INT },
{ "TYPE", 0, (void *) IDL_TYP_STRING },
{ "BITS_PER_SAMPLE", 0, (void *) IDL_TYP_LONG },
{ "ORIENTATION", 0, (void *) IDL_TYP_LONG },
{ "PLANAR_CONFIG", 0, (void *) IDL_TYP_LONG },
{ "PHOTOMETRIC", 0, (void *) IDL_TYP_LONG },
{ "POSITION", dim_dims, (void *) IDL_TYP_FLOAT },
{ "RESOLUTION", dim_dims, (void *) IDL_TYP_FLOAT },
{ "UNITS", 0, (void *) IDL_TYP_LONG },
{ "TILE_SIZE", dim_dims, (void *) IDL_TYP_LONG },
{ "DESCRIPTION", 0, (void *) IDL_TYP_STRING },
{ "DOCUMENT_NAME", 0, (void *) IDL_TYP_STRING },
{ "DATE_TIME", 0, (void *) IDL_TYP_STRING },
{ "VERSION", 0, (void *) IDL_TYP_LONG },
{ 0 }
};
typedef struct {
IDL_LONG channels;
IDL_LONG dimensions[2];
IDL_INT has_palette;
IDL_LONG image_index;
IDL_LONG num_images;
IDL_INT pixel_type;
IDL_STRING type_str;
IDL_LONG bits_per_sample;
IDL_LONG orientation;
IDL_LONG planar_config;
IDL_LONG photometric;
float position[2];
float resolution[2];
IDL_LONG units;
IDL_LONG tile_size[2];
IDL_STRING description;
IDL_STRING document_name;
IDL_STRING date_time;
IDL_LONG version;
} ret_struct;
s_def = IDL_MakeStruct(0, s_tags); /* create the struct */
ret = (ret_struct *)
IDL_MakeTempStructVector(s_def, 1, &vpTmp,IDL_FALSE);
I'm not sure how much of this API is actually included in "idl_export.h", so you might be unsuccessful at getting this to compile. But hopefully it will give you a start!
Cheers,
Chris
|