/* * The Npic library * * Copyright (C) 2003 Edouard Thiel * * This library is free software under the terms of the * GNU Lesser General Public License (LGPL) version 2.1. */ /* * images.h - 15/12/2008 * * Declaration of struct Npic_image */ #ifndef NPIC__IMAGES_H #define NPIC__IMAGES_H /* * Types of images. * * 2,3,4,5,6 = dimension. * C = unsigned Char (8 bits); * S = signed Short (16 bits); * L = signed Long (32 bits); * D = Double; * Q = Quadri unsigned short (4*16 bits). */ enum { NPIC_IMAGE_BB = 0x1234, NPIC_IMAGE_2C, NPIC_IMAGE_2L, NPIC_IMAGE_2D, NPIC_IMAGE_2Q, NPIC_IMAGE_3C, NPIC_IMAGE_3L, NPIC_IMAGE_3D, NPIC_IMAGE_3Q, NPIC_IMAGE_4C, NPIC_IMAGE_4L, NPIC_IMAGE_4D, NPIC_IMAGE_4Q, NPIC_IMAGE_5C, NPIC_IMAGE_5L, NPIC_IMAGE_5D, NPIC_IMAGE_5Q, NPIC_IMAGE_6C, NPIC_IMAGE_6L, NPIC_IMAGE_6D, NPIC_IMAGE_6Q, NPIC_IMAGE_EE }; /* * Npic_image sub-structs, strictly identical in memory. * * Some field names are protected with '_'. */ typedef struct { int type, /* Nature : NPIC_IMAGE_2C, .. */ ok, /* status of image */ pixsize, /* Memory size of one pixel */ dim, /* Dimension : 2 .. 6 */ xbor, ybor, zbor, tbor, sbor, rbor, /* Width of the borders : >= 0 */ xmax, ymax, zmax, tmax, smax, rmax, /* Width, height, .. : > 0 */ xtot, ytot, ztot, ttot, stot, rtot; /* Total width, .. : > 0 */ size_t pixtot; /* Total number of pixels: > 0 */ void **vy_, **vz_, **vt_, **vs_, **vr_; /* Base addr of lines, plans .. */ void *vec_, /* Linear array of pixels */ *pix_; /* Access [y][x] or [z][y][x] or .. [r][s][t][z][y][x] */ Npic_props props; /* To store a list of text properties, see props.h */ } Npic_image_gen; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor_, tbor_, sbor_, rbor_, xmax, ymax, zmax_, tmax_, smax_, rmax_, xtot, ytot, ztot_, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_c *vec, **pix; Npic_props props; } Npic_image_2c; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor_, tbor_, sbor_, rbor_, xmax, ymax, zmax_, tmax_, smax_, rmax_, xtot, ytot, ztot_, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_l *vec, **pix; Npic_props props; } Npic_image_2l; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor_, tbor_, sbor_, rbor_, xmax, ymax, zmax_, tmax_, smax_, rmax_, xtot, ytot, ztot_, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_d *vec, **pix; Npic_props props; } Npic_image_2d; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor_, tbor_, sbor_, rbor_, xmax, ymax, zmax_, tmax_, smax_, rmax_, xtot, ytot, ztot_, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_q *vec, **pix; Npic_props props; } Npic_image_2q; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor_, sbor_, rbor_, xmax, ymax, zmax, tmax_, smax_, rmax_, xtot, ytot, ztot, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_c *vec, ***pix; Npic_props props; } Npic_image_3c; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor_, sbor_, rbor_, xmax, ymax, zmax, tmax_, smax_, rmax_, xtot, ytot, ztot, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_l *vec, ***pix; Npic_props props; } Npic_image_3l; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor_, sbor_, rbor_, xmax, ymax, zmax, tmax_, smax_, rmax_, xtot, ytot, ztot, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_d *vec, ***pix; Npic_props props; } Npic_image_3d; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor_, sbor_, rbor_, xmax, ymax, zmax, tmax_, smax_, rmax_, xtot, ytot, ztot, ttot_, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_q *vec, ***pix; Npic_props props; } Npic_image_3q; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor_, rbor_, xmax, ymax, zmax, tmax, smax_, rmax_, xtot, ytot, ztot, ttot, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_c *vec, ****pix; Npic_props props; } Npic_image_4c; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor_, rbor_, xmax, ymax, zmax, tmax, smax_, rmax_, xtot, ytot, ztot, ttot, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_l *vec, ****pix; Npic_props props; } Npic_image_4l; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor_, rbor_, xmax, ymax, zmax, tmax, smax_, rmax_, xtot, ytot, ztot, ttot, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_d *vec, ****pix; Npic_props props; } Npic_image_4d; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor_, rbor_, xmax, ymax, zmax, tmax, smax_, rmax_, xtot, ytot, ztot, ttot, stot_, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_q *vec, ****pix; Npic_props props; } Npic_image_4q; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor_, xmax, ymax, zmax, tmax, smax, rmax_, xtot, ytot, ztot, ttot, stot, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_c *vec, *****pix; Npic_props props; } Npic_image_5c; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor_, xmax, ymax, zmax, tmax, smax, rmax_, xtot, ytot, ztot, ttot, stot, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_l *vec, *****pix; Npic_props props; } Npic_image_5l; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor_, xmax, ymax, zmax, tmax, smax, rmax_, xtot, ytot, ztot, ttot, stot, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_d *vec, *****pix; Npic_props props; } Npic_image_5d; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor_, xmax, ymax, zmax, tmax, smax, rmax_, xtot, ytot, ztot, ttot, stot, rtot_; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_q *vec, *****pix; Npic_props props; } Npic_image_5q; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor, xmax, ymax, zmax, tmax, smax, rmax, xtot, ytot, ztot, ttot, stot, rtot; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_c *vec, ******pix; Npic_props props; } Npic_image_6c; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor, xmax, ymax, zmax, tmax, smax, rmax, xtot, ytot, ztot, ttot, stot, rtot; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_l *vec, ******pix; Npic_props props; } Npic_image_6l; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor, xmax, ymax, zmax, tmax, smax, rmax, xtot, ytot, ztot, ttot, stot, rtot; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_d *vec, ******pix; Npic_props props; } Npic_image_6d; typedef struct { int type, ok, pixsize, dim, xbor, ybor, zbor, tbor, sbor, rbor, xmax, ymax, zmax, tmax, smax, rmax, xtot, ytot, ztot, ttot, stot, rtot; size_t pixtot; void **vy_, **vz_, **vt_, **vs_, **vr_; Npic_q *vec, ******pix; Npic_props props; } Npic_image_6q; /* * Image type of dimension 2 to 6, different pixel types, * external border, linear access and cartesian coordinates access. */ typedef union { int type; Npic_image_gen gen; /* generic struct for accessing fields */ Npic_image_2c im_2c; Npic_image_2l im_2l; Npic_image_2d im_2d; Npic_image_2q im_2q; Npic_image_3c im_3c; Npic_image_3l im_3l; Npic_image_3d im_3d; Npic_image_3q im_3q; Npic_image_4c im_4c; Npic_image_4l im_4l; Npic_image_4d im_4d; Npic_image_4q im_4q; Npic_image_5c im_5c; Npic_image_5l im_5l; Npic_image_5d im_5d; Npic_image_5q im_5q; Npic_image_6c im_6c; Npic_image_6l im_6l; Npic_image_6d im_6d; Npic_image_6q im_6q; } Npic_image; #endif /* NPIC__IMAGES_H */