Beispiel #1
0
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);

}
Beispiel #2
0
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);

}