7
/*---------------------------------------------------------------------------*/
13
* Makes a copy of <em>map</em> with name <em>nameOut</em> which is
14
* written with <em>precision</em>.
15
* The source code can be found in <em>changeprecision.c</em>.
23
void G3d_changePrecision(void *map, int precision, const char *nameOut)
26
int x, y, z, savePrecision, saveCompression, saveLzw, saveRle;
31
int tileXsave, tileYsave, tileZsave, tileX, tileY, tileZ, saveType;
33
saveType = G3d_getFileType();
34
/* G3d_setFileType (G3d_fileTypeMap (map)); */
35
G3d_getCompressionMode(&saveCompression, &saveLzw, &saveRle,
37
G3d_setCompressionMode(G3D_COMPRESSION, saveLzw, saveRle, precision);
38
G3d_getTileDimension(&tileXsave, &tileYsave, &tileZsave);
39
G3d_getTileDimensionsMap(map, &tileX, &tileY, &tileZ);
40
G3d_setTileDimension(tileX, tileY, tileZ);
42
typeIntern = G3d_tileTypeMap(map);
43
G3d_getRegionStructMap(map, ®ion);
46
G3d_openCellNew(nameOut, typeIntern, G3D_USE_CACHE_DEFAULT, ®ion);
48
G3d_fatalError("G3d_changePrecision: error in G3d_openCellNew");
50
G3d_setFileType(saveType);
51
G3d_setCompressionMode(saveCompression, saveLzw, saveRle, savePrecision);
52
G3d_setTileDimension(tileXsave, tileYsave, tileZsave);
54
data = G3d_allocTiles(map, 1);
56
G3d_fatalError("G3d_changePrecision: error in G3d_allocTiles");
57
G3d_getNofTilesMap(map2, &nx, &ny, &nz);
59
for (z = 0; z < nz; z++)
60
for (y = 0; y < ny; y++)
61
for (x = 0; x < nx; x++) {
62
if (!G3d_readTile(map, G3d_tile2tileIndex(map, x, y, z), data,
65
("G3d_changePrecision: error in G3d_readTile");
67
(map2, G3d_tile2tileIndex(map2, x, y, z), data,
70
("G3d_changePrecision: error in G3d_writeTile");
74
if (!G3d_closeCell(map2))
75
G3d_fatalError("G3d_changePrecision: error in G3d_closeCell");