123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- #include "vizual.h"
- /******************************** cap_data **********************************/
- void draw_cap_side(D_spec, Headp, G3header, D_Cap, type)
- struct dspec *D_spec;
- file_info *Headp;
- file_info *G3header;
- struct Cap *D_Cap;
- int type;
- {
- int t, y, z;
- int xdim, ydim, zdim;
- int xysize;
- FILE *fp;
- float *DB;
- int old = 0;
- int yloop, zloop;
- int ystart, zstart;
- int xrc, yrc, zrc;
- int offset;
- *(D_Cap->D_buff) = '\0';
- fp = G3header->datainfp;
- xdim = G3header->xdim;
- ydim = G3header->ydim;
- zdim = G3header->zdim;
- xysize = xdim * ydim;
- build_thresh_arrays(D_spec, Headp);
- /*
- ** Old DSPF Cubes are 3 less than the number of data points across
- ** in each dimension. Thus to make Grid3 match up with
- ** Cubes, we have to throw away the outer points of each side
- ** Check difference in dimensions to see if we have an old
- ** or new file.
- */
- if ((xdim - Headp->xdim > 1) ||
- (ydim - Headp->ydim > 1) || (zdim - Headp->zdim > 1))
- old = 1;
- if (old) {
- yloop = ydim - 1;
- ystart = 1;
- zloop = zdim - 1;
- zstart = 1;
- xrc = xdim - 2;
- yrc = ydim - 2;
- zrc = zdim - 2;
- offset = 1;
- }
- else {
- yloop = ydim;
- ystart = 0;
- zloop = zdim;
- zstart = 0;
- xrc = xdim;
- yrc = ydim;
- zrc = zdim;
- offset = 0;
- }
- for (t = 0; t < 6; t++) {
- if (!(type & (1 << t)))
- continue;
- DB = D_Cap->D_buff;
- D_Cap->side = t;
- switch (t) {
- case 0: /*xyplane z = zdim */
- D_Cap->reverse = 1;
- D_Cap->minx = D_spec->B[X];
- D_Cap->miny = D_spec->B[Y];
- D_Cap->maxx = D_spec->E[X];
- D_Cap->maxy = D_spec->E[Y];
- D_Cap->z = D_spec->E[Z];
- D_Cap->Rows = yrc;
- D_Cap->Cols = xrc;
- for (y = ystart; y < yloop; y++) {
- G_fseek(fp, D_offset +
- (xysize * (D_spec->E[Z]) + y * xdim + offset) *
- sizeof(float), 0);
- fread(DB, xrc, sizeof(float), fp);
- DB += xrc;
- }
- break;
- case 1: /*xyplane z = 0 */
- D_Cap->reverse = 0;
- D_Cap->minx = D_spec->B[X];
- D_Cap->miny = D_spec->B[Y];
- D_Cap->maxx = D_spec->E[X];
- D_Cap->maxy = D_spec->E[Y];
- D_Cap->z = D_spec->B[Z];
- D_Cap->Rows = yrc;
- D_Cap->Cols = xrc;
- for (y = ystart; y < yloop; y++) {
- G_fseek(fp, D_offset +
- (xysize * (D_spec->B[Z] + offset) + y * xdim + offset) *
- sizeof(float), 0);
- fread(DB, xrc, sizeof(float), fp);
- DB += xrc;
- }
- break;
- case 2: /*yzplane x=xdim */
- D_Cap->reverse = 0;
- D_Cap->minx = D_spec->B[Y];
- D_Cap->miny = D_spec->B[Z];
- D_Cap->maxx = D_spec->E[Y];
- D_Cap->maxy = D_spec->E[Z];
- D_Cap->z = D_spec->E[X];
- D_Cap->Rows = zrc;
- D_Cap->Cols = yrc;
- for (z = zstart; z < zloop; z++) {
- for (y = ystart; y < yloop; y++) {
- G_fseek(fp, D_offset +
- (xysize * z + xdim * y + (D_spec->E[X] + offset)) *
- sizeof(float), 0);
- fread(DB++, sizeof(float), 1, fp);
- }
- }
- break;
- case 3: /*yzplane x = 0 */
- D_Cap->reverse = 1;
- D_Cap->minx = D_spec->B[Y];
- D_Cap->miny = D_spec->B[Z];
- D_Cap->maxx = D_spec->E[Y];
- D_Cap->maxy = D_spec->E[Z];
- D_Cap->z = D_spec->B[X];
- D_Cap->Rows = zrc;
- D_Cap->Cols = yrc;
- for (z = zstart; z < zloop; z++) {
- for (y = ystart; y < yloop; y++) {
- G_fseek(fp, D_offset +
- (xysize * z + xdim * y + (D_spec->B[X] + offset)) *
- sizeof(float), 0);
- fread(DB++, sizeof(float), 1, fp);
- }
- }
- break;
- case 4: /*xzplane y = ydim */
- D_Cap->reverse = 0;
- D_Cap->minx = D_spec->B[X];
- D_Cap->miny = D_spec->B[Z];
- D_Cap->maxx = D_spec->E[X];
- D_Cap->maxy = D_spec->E[Z];
- D_Cap->z = D_spec->E[Y];
- D_Cap->Rows = zrc;
- D_Cap->Cols = xrc;
- for (z = zstart; z < zloop; z++) {
- /* fill in the buff one line at a time */
- G_fseek(fp, D_offset +
- (xysize * z + xdim * (D_spec->E[Y] + offset) + offset) *
- sizeof(float), 0);
- fread(DB, sizeof(float), xrc, fp);
- DB += xrc;
- }
- break;
- case 5: /*xzplane y = 0 */
- D_Cap->reverse = 1;
- D_Cap->minx = D_spec->B[X];
- D_Cap->miny = D_spec->B[Z];
- D_Cap->maxx = D_spec->E[X];
- D_Cap->maxy = D_spec->E[Z];
- D_Cap->z = D_spec->B[Y];
- D_Cap->Rows = zrc;
- D_Cap->Cols = xrc;
- for (z = zstart; z < zloop; z++) {
- /* fill in the buff one line at a time */
- G_fseek(fp, D_offset +
- (xysize * z + xdim * (D_spec->B[Y] + offset) + offset) *
- sizeof(float), 0);
- fread(DB, sizeof(float), xrc, fp);
- DB += xrc;
- }
- break;
- }
- draw_cap(Headp, D_spec, D_Cap);
- }
- }
|