GridMemStruct* GridMemList_AddGridDesc(GridDesc* pgrid) { GridMemStruct* pnewGridMemStruct; //printf("IN: GridMemList_AddGridDesc\n"); pnewGridMemStruct = (GridMemStruct*) malloc(sizeof(GridMemStruct)); pnewGridMemStruct->pgrid = (GridDesc*) malloc(sizeof(GridDesc)); *(pnewGridMemStruct->pgrid) = *pgrid; strcpy(pnewGridMemStruct->pgrid->chr_type, pgrid->chr_type); strcpy(pnewGridMemStruct->pgrid->title, pgrid->title); pnewGridMemStruct->buffer = AllocateGrid(pnewGridMemStruct->pgrid); pnewGridMemStruct->array = CreateGridArray(pnewGridMemStruct->pgrid); pnewGridMemStruct->active = 1; pnewGridMemStruct->grid_read = 0; GridMemList_AddElement(pnewGridMemStruct); return(pnewGridMemStruct); }
int Rotate90CW(int argc, char *argv[]) { int istat, narg; char fn_grid_in[FILENAME_MAX]; char fn_grid_out[FILENAME_MAX]; FILE *fp_grid_in; FILE *fp_grid_in_hdr; GridDesc grid_in, grid_out; int ix, iy, iz; float val; // open input grid file strcpy(fn_grid_in, argv[2]); if ((istat = OpenGrid3dFile(fn_grid_in, &fp_grid_in, &fp_grid_in_hdr, &grid_in, "", NULL)) < 0) { puterr("ERROR opening input grid file."); return(-1); } // cread and initialize output grid // output file name strcpy(fn_grid_out, argv[3]); // create output grid description grid_out = grid_in; grid_out.numx = grid_in.numy; grid_out.numy = grid_in.numx; // allocate grid grid_out.buffer = AllocateGrid(&grid_out); if (grid_out.buffer == NULL) { puterr("ERROR: allocating memory for output grid buffer.\n"); return(-1); } // create grid array access pointers grid_out.array = CreateGridArray(&grid_out); if (grid_out.array == NULL) { puterr("ERROR: creating array for accessing output grid buffer.\n"); return(-1); } // rotate input grid file into output grid for (ix = 0; ix < grid_in.numx; ix++) { printf("ix = %d/%d\r", ix, grid_in.numx); for (iy = 0; iy < grid_in.numy; iy++) { for (iz = 0; iz < grid_in.numz; iz++) { val = ReadGrid3dValue(fp_grid_in, ix, iy, iz, &grid_in); grid_out.array[iy][grid_out.numy - ix - 1][iz] = val; } } } printf("\n"); // save sum grid to disk if ((istat = WriteGrid3dBuf(&grid_out, NULL, fn_grid_out, "rot90CW")) < 0) { puterr("ERROR: writing rotated grid to disk.\n"); return(-1); } close(fp_grid_in); close(fp_grid_in_hdr); return(0); }