From: curt Date: Fri, 23 Jan 1998 20:06:50 +0000 (+0000) Subject: tileutils.* renamed to bucketutils.* X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=e3f22ebb2aed38835d635334c3d665811f2e9f51;p=flightgear.git tileutils.* renamed to bucketutils.* --- diff --git a/Scenery/Makefile b/Scenery/Makefile index 87786dc63..fe6996e71 100644 --- a/Scenery/Makefile +++ b/Scenery/Makefile @@ -27,8 +27,8 @@ ARLIBRARY = libScenery.a TARGETS = $(ARLIBRARY) -CFILES = common.c geometry.c mesh.c obj.c scenery.c texload.c \ - tilemgr.c tileutils.c +CFILES = bucketutils.c common.c geometry.c mesh.c obj.c scenery.c texload.c \ + tilemgr.c CXXFILES = LDIRT = $(FG_ROOT_LIB)/$(ARLIBRARY) diff --git a/Scenery/bucketutils.c b/Scenery/bucketutils.c new file mode 100644 index 000000000..b8c832daf --- /dev/null +++ b/Scenery/bucketutils.c @@ -0,0 +1,297 @@ +/************************************************************************** + * tileutils.c -- support routines to handle dynamic management of scenery tiles + * + * Written by Curtis Olson, started January 1998. + * + * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + * (Log is kept at end of this file) + **************************************************************************/ + + +#include +#include + +#include +#include + + +/* Generate the unique scenery tile index containing the specified + lon/lat parameters. + + The index is constructed as follows: + + 9 bits - to represent 360 degrees of longitude (-180 to 179) + 8 bits - to represent 180 degrees of latitude (-90 to 89) + + Each 1 degree by 1 degree tile is further broken down into an 8x8 + grid. So we also need: + + 3 bits - to represent x (0 to 7) + 3 bits - to represent y (0 to 7) */ +long int gen_index(struct bucket *p) { + long index = 0; + + index = ((p->lon + 180) << 14) + ((p->lat + 90) << 6) + (p->y << 3) + p->x; + /* printf(" generated index = %ld\n", index); */ + + return(index); +} + + +/* Parse a unique scenery tile index and find the lon, lat, x, and y */ +void parse_index(long int index, struct bucket *p) { + p->lon = index >> 14; + index -= p->lon << 14; + p->lon -= 180; + + p->lat = index >> 6; + index -= p->lat << 6; + p->lat -= 90; + + p->y = index >> 3; + index -= p->y << 3; + + p->x = index; +} + + +/* Build a path name from an tile index */ +void gen_base_path(struct bucket *p, char *path) { + long int index; + int top_lon, top_lat, main_lon, main_lat; + char hem, pole; + + index = gen_index(p); + + path[0] = '\0'; + + top_lon = p->lon / 10; + main_lon = p->lon; + if ( (p->lon < 0) && (top_lon * 10 != p->lon) ) { + top_lon -= 1; + } + top_lon *= 10; + if ( top_lon >= 0 ) { + hem = 'e'; + } else { + hem = 'w'; + top_lon *= -1; + } + if ( main_lon < 0 ) { + main_lon *= -1; + } + + top_lat = p->lat / 10; + main_lat = p->lat; + if ( (p->lat < 0) && (top_lat * 10 != p->lat) ) { + top_lat -= 1; + } + top_lat *= 10; + if ( top_lat >= 0 ) { + pole = 'n'; + } else { + pole = 's'; + top_lat *= -1; + } + if ( main_lat < 0 ) { + main_lat *= -1; + } + + sprintf(path, "%c%03d%c%03d/%c%03d%c%03d", + hem, top_lon, pole, top_lat, + hem, main_lon, pole, main_lat); +} + + +/* offset an bucket struct by the specified amounts in the X & Y direction */ +void offset_bucket(struct bucket *in, struct bucket *out, int x, int y) { + int diff, temp; + int dist_lat; + + out->lon = in->lon; + out->lat = in->lat; + out->x = in->x; + out->y = in->y; + + /* do X direction */ + diff = out->x + x; + /* printf(" reducing x (%d)\n", diff); */ + if ( diff >= 0 ) { + temp = diff / 8; + } else if ( diff < -7 ) { + temp = (diff + 1) / 8 - 1; + } else { + temp = diff / 8 - 1; + } + out->x = ((diff % 8) + 8) % 8; + out->lon = ( (out->lon + 180 + 360 + temp) % 360 ) - 180; + + /* do Y direction */ + diff = out->y + y; + /* printf(" reducing x (%d)\n", diff); */ + if ( diff >= 0 ) { + temp = diff / 8; + } else if ( diff < -7 ) { + temp = (diff + 1) / 8 - 1; + } else { + temp = diff / 8 - 1; + } + out->y = ((diff % 8) + 8) % 8; + out->lat = out->lat + temp; + + if ( out->lat >= 90 ) { + dist_lat = out->lat - 90; + /* printf(" +lat = %d +y = %d\n", dist_lat, out->y); */ + + out->lat = 90 - (dist_lat + 1); + out->lon = ( (out->lon + 180 + 180) % 360 ) - 180; + out->y = 7 - out->y; + } + + if ( out->lat < -90 ) { + dist_lat = -90 - out->lat; + /* printf(" +lat = %d +y = %d\n", dist_lat, out->y); */ + + out->lat = -90 + (dist_lat - 1); + out->lon = ( (out->lon + 180 + 180) % 360 ) - 180; + out->y = 7 - out->y; + } +} + + +/* Given a lat/lon, find the "bucket" or tile that it falls within */ +void find_bucket(double lon, double lat, struct bucket *p) { + double diff; + + diff = lon - (double)(int)lon; + /* printf("diff = %.2f\n", diff); */ + if ( (lon >= 0) || (fabs(diff) < FG_EPSILON) ) { + p->lon = (int)lon; + } else { + p->lon = (int)lon - 1; + } + /* printf(" p->lon = %d\n", p->lon); */ + + diff = lat - (double)(int)lat; + /* printf("diff = %.2f\n", diff); */ + if ( (lat >= 0) || (fabs(diff) < FG_EPSILON) ) { + p->lat = (int)lat; + } else { + p->lat = (int)lat - 1; + } + /* printf(" p->lat = %d\n", p->lat); */ + + p->x = (lon - p->lon) * 8; + p->y = (lat - p->lat) * 8; + printf("Bucket = lon,lat = %d,%d x,y index = %d,%d\n", + p->lon, p->lat, p->x, p->y); +} + + +/* Given a lat/lon, fill in the local tile index array */ +void gen_idx_array(struct bucket *p1, struct bucket *tiles, + int width, int height) { + struct bucket *p2; + int dw, dh, i, j; + + dh = height / 2; + dw = width / 2; + for ( j = 0; j < height; j++ ) { + for ( i = 0; i < width; i++ ) { + offset_bucket(p1, &tiles[(j*width)+i], i - dw, j - dh); + p2 = &tiles[(j*width)+i]; + printf(" bucket = %d %d %d %d index = %ld\n", + p2->lon, p2->lat, p2->x, p2->y, + gen_index(&tiles[(j*width)+i])); + } + } +} + + +/* sample main for testing +int main() { + struct bucket p1; + long int tile[49]; + char path[256]; + double lon, lat; + int i, j; + + p1.lon = 180; + p1.lat = 90; + p1.x = 7; + p1.y = 7; + + printf("Max index = %ld\n", gen_index(&p1)); + + lon = -50.0; + lat = -50.0; + find_bucket(lon, lat, &p1); + gen_idx_array(&p1, tile, 7, 7); + for ( j = 0; j < 7; j++ ) { + for ( i = 0; i < 7; i++ ) { + gen_path(tile[(j*7)+i], path); + printf(" path = %s\n", path); + } + } + + lon = 50.0; + lat = 50.0; + find_bucket(lon, lat, &p1); + gen_idx_array(&p1, tile, 7, 7); + for ( j = 0; j < 7; j++ ) { + for ( i = 0; i < 7; i++ ) { + gen_path(tile[(j*7)+i], path); + printf(" path = %s\n", path); + } + } + + return(1); +} */ + + +/* $Log$ +/* Revision 1.1 1998/01/23 20:06:51 curt +/* tileutils.* renamed to bucketutils.* +/* + * Revision 1.6 1998/01/19 19:27:18 curt + * Merged in make system changes from Bob Kuehne + * This should simplify things tremendously. + * + * Revision 1.5 1998/01/14 02:19:04 curt + * Makde offset_bucket visible to outside. + * + * Revision 1.4 1998/01/13 00:23:12 curt + * Initial changes to support loading and management of scenery tiles. Note, + * there's still a fair amount of work left to be done. + * + * Revision 1.3 1998/01/10 00:01:47 curt + * Misc api changes and tweaks. + * + * Revision 1.2 1998/01/08 02:22:28 curt + * Continue working on basic features. + * + * Revision 1.1 1998/01/07 23:50:52 curt + * "area" renamed to "tile" + * + * Revision 1.1 1998/01/07 23:23:40 curt + * Initial revision. + * + * */ + + diff --git a/Scenery/bucketutils.h b/Scenery/bucketutils.h new file mode 100644 index 000000000..1f71d5978 --- /dev/null +++ b/Scenery/bucketutils.h @@ -0,0 +1,107 @@ +/************************************************************************** + * tileutils.h -- support routines to handle dynamic management of scenery tiles + * + * Written by Curtis Olson, started January 1998. + * + * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + * (Log is kept at end of this file) + **************************************************************************/ + + +#ifndef _TILEUTILS_H +#define _TILEUTILS_H + + +struct bucket { + int lon; /* longitude (-180 to 179) */ + int lat; /* latitude (-90 to 89) */ + int x; /* x (0 to 7) */ + int y; /* y (0 to 7) */ +}; + + +/* Generate the unique scenery tile index containing the specified + lon/lat parameters. + + The index is constructed as follows: + + 9 bits - to represent 360 degrees of longitude (-180 to 179) + 8 bits - to represent 180 degrees of latitude (-90 to 89) + + Each 1 degree by 1 degree tile is further broken down into an 8x8 + grid. So we also need: + + 3 bits - to represent x (0 to 7) + 3 bits - to represent y (0 to 7) */ +long int gen_index(struct bucket *p); + + +/* Parse a unique scenery tile index and find the lon, lat, x, and y */ +void parse_index(long int index, struct bucket *p); + + +/* Build a path name from an tile index */ +void gen_base_path(struct bucket *p, char *path); + + +/* offset an bucket struct by the specified amounts in the X & Y direction */ +void offset_bucket(struct bucket *in, struct bucket *out, int x, int y); + + +/* Given a lat/lon, find the "bucket" or tile that it falls within */ +void find_bucket(double lon, double lat, struct bucket *p); + + +/* Given a lat/lon, fill in the local tile index array */ +void gen_idx_array(struct bucket *p1, struct bucket *tiles, + int width, int height); + + +#endif /* _TILEUTILS_H */ + + +/* $Log$ +/* Revision 1.1 1998/01/23 20:06:52 curt +/* tileutils.* renamed to bucketutils.* +/* + * Revision 1.6 1998/01/22 02:59:42 curt + * Changed #ifdef FILE_H to #ifdef _FILE_H + * + * Revision 1.5 1998/01/14 02:19:05 curt + * Makde offset_bucket visible to outside. + * + * Revision 1.4 1998/01/13 00:23:12 curt + * Initial changes to support loading and management of scenery tiles. Note, + * there's still a fair amount of work left to be done. + * + * Revision 1.3 1998/01/10 00:01:48 curt + * Misc api changes and tweaks. + * + * Revision 1.2 1998/01/08 02:22:28 curt + * Continue working on basic features. + * + * Revision 1.1 1998/01/07 23:50:52 curt + * "area" renamed to "tile" + * + * Revision 1.1 1998/01/07 23:23:40 curt + * Initial revision. + * + * */ + + diff --git a/Scenery/tileutils.c b/Scenery/tileutils.c deleted file mode 100644 index ec424ff4e..000000000 --- a/Scenery/tileutils.c +++ /dev/null @@ -1,294 +0,0 @@ -/************************************************************************** - * tileutils.c -- support routines to handle dynamic management of scenery tiles - * - * Written by Curtis Olson, started January 1998. - * - * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include -#include - -#include -#include - - -/* Generate the unique scenery tile index containing the specified - lon/lat parameters. - - The index is constructed as follows: - - 9 bits - to represent 360 degrees of longitude (-180 to 179) - 8 bits - to represent 180 degrees of latitude (-90 to 89) - - Each 1 degree by 1 degree tile is further broken down into an 8x8 - grid. So we also need: - - 3 bits - to represent x (0 to 7) - 3 bits - to represent y (0 to 7) */ -long int gen_index(struct bucket *p) { - long index = 0; - - index = ((p->lon + 180) << 14) + ((p->lat + 90) << 6) + (p->y << 3) + p->x; - /* printf(" generated index = %ld\n", index); */ - - return(index); -} - - -/* Parse a unique scenery tile index and find the lon, lat, x, and y */ -void parse_index(long int index, struct bucket *p) { - p->lon = index >> 14; - index -= p->lon << 14; - p->lon -= 180; - - p->lat = index >> 6; - index -= p->lat << 6; - p->lat -= 90; - - p->y = index >> 3; - index -= p->y << 3; - - p->x = index; -} - - -/* Build a path name from an tile index */ -void gen_base_path(struct bucket *p, char *path) { - long int index; - int top_lon, top_lat, main_lon, main_lat; - char hem, pole; - - index = gen_index(p); - - path[0] = '\0'; - - top_lon = p->lon / 10; - main_lon = p->lon; - if ( (p->lon < 0) && (top_lon * 10 != p->lon) ) { - top_lon -= 1; - } - top_lon *= 10; - if ( top_lon >= 0 ) { - hem = 'e'; - } else { - hem = 'w'; - top_lon *= -1; - } - if ( main_lon < 0 ) { - main_lon *= -1; - } - - top_lat = p->lat / 10; - main_lat = p->lat; - if ( (p->lat < 0) && (top_lat * 10 != p->lat) ) { - top_lat -= 1; - } - top_lat *= 10; - if ( top_lat >= 0 ) { - pole = 'n'; - } else { - pole = 's'; - top_lat *= -1; - } - if ( main_lat < 0 ) { - main_lat *= -1; - } - - sprintf(path, "%c%03d%c%03d/%c%03d%c%03d", - hem, top_lon, pole, top_lat, - hem, main_lon, pole, main_lat); -} - - -/* offset an bucket struct by the specified amounts in the X & Y direction */ -void offset_bucket(struct bucket *in, struct bucket *out, int x, int y) { - int diff, temp; - int dist_lat; - - out->lon = in->lon; - out->lat = in->lat; - out->x = in->x; - out->y = in->y; - - /* do X direction */ - diff = out->x + x; - /* printf(" reducing x (%d)\n", diff); */ - if ( diff >= 0 ) { - temp = diff / 8; - } else if ( diff < -7 ) { - temp = (diff + 1) / 8 - 1; - } else { - temp = diff / 8 - 1; - } - out->x = ((diff % 8) + 8) % 8; - out->lon = ( (out->lon + 180 + 360 + temp) % 360 ) - 180; - - /* do Y direction */ - diff = out->y + y; - /* printf(" reducing x (%d)\n", diff); */ - if ( diff >= 0 ) { - temp = diff / 8; - } else if ( diff < -7 ) { - temp = (diff + 1) / 8 - 1; - } else { - temp = diff / 8 - 1; - } - out->y = ((diff % 8) + 8) % 8; - out->lat = out->lat + temp; - - if ( out->lat >= 90 ) { - dist_lat = out->lat - 90; - /* printf(" +lat = %d +y = %d\n", dist_lat, out->y); */ - - out->lat = 90 - (dist_lat + 1); - out->lon = ( (out->lon + 180 + 180) % 360 ) - 180; - out->y = 7 - out->y; - } - - if ( out->lat < -90 ) { - dist_lat = -90 - out->lat; - /* printf(" +lat = %d +y = %d\n", dist_lat, out->y); */ - - out->lat = -90 + (dist_lat - 1); - out->lon = ( (out->lon + 180 + 180) % 360 ) - 180; - out->y = 7 - out->y; - } -} - - -/* Given a lat/lon, find the "bucket" or tile that it falls within */ -void find_bucket(double lon, double lat, struct bucket *p) { - double diff; - - diff = lon - (double)(int)lon; - /* printf("diff = %.2f\n", diff); */ - if ( (lon >= 0) || (fabs(diff) < FG_EPSILON) ) { - p->lon = (int)lon; - } else { - p->lon = (int)lon - 1; - } - /* printf(" p->lon = %d\n", p->lon); */ - - diff = lat - (double)(int)lat; - /* printf("diff = %.2f\n", diff); */ - if ( (lat >= 0) || (fabs(diff) < FG_EPSILON) ) { - p->lat = (int)lat; - } else { - p->lat = (int)lat - 1; - } - /* printf(" p->lat = %d\n", p->lat); */ - - p->x = (lon - p->lon) * 8; - p->y = (lat - p->lat) * 8; - printf("Bucket = lon,lat = %d,%d x,y index = %d,%d\n", - p->lon, p->lat, p->x, p->y); -} - - -/* Given a lat/lon, fill in the local tile index array */ -void gen_idx_array(struct bucket *p1, struct bucket *tiles, - int width, int height) { - struct bucket *p2; - int dw, dh, i, j; - - dh = height / 2; - dw = width / 2; - for ( j = 0; j < height; j++ ) { - for ( i = 0; i < width; i++ ) { - offset_bucket(p1, &tiles[(j*width)+i], i - dw, j - dh); - p2 = &tiles[(j*width)+i]; - printf(" bucket = %d %d %d %d index = %ld\n", - p2->lon, p2->lat, p2->x, p2->y, - gen_index(&tiles[(j*width)+i])); - } - } -} - - -/* sample main for testing -int main() { - struct bucket p1; - long int tile[49]; - char path[256]; - double lon, lat; - int i, j; - - p1.lon = 180; - p1.lat = 90; - p1.x = 7; - p1.y = 7; - - printf("Max index = %ld\n", gen_index(&p1)); - - lon = -50.0; - lat = -50.0; - find_bucket(lon, lat, &p1); - gen_idx_array(&p1, tile, 7, 7); - for ( j = 0; j < 7; j++ ) { - for ( i = 0; i < 7; i++ ) { - gen_path(tile[(j*7)+i], path); - printf(" path = %s\n", path); - } - } - - lon = 50.0; - lat = 50.0; - find_bucket(lon, lat, &p1); - gen_idx_array(&p1, tile, 7, 7); - for ( j = 0; j < 7; j++ ) { - for ( i = 0; i < 7; i++ ) { - gen_path(tile[(j*7)+i], path); - printf(" path = %s\n", path); - } - } - - return(1); -} */ - - -/* $Log$ -/* Revision 1.6 1998/01/19 19:27:18 curt -/* Merged in make system changes from Bob Kuehne -/* This should simplify things tremendously. -/* - * Revision 1.5 1998/01/14 02:19:04 curt - * Makde offset_bucket visible to outside. - * - * Revision 1.4 1998/01/13 00:23:12 curt - * Initial changes to support loading and management of scenery tiles. Note, - * there's still a fair amount of work left to be done. - * - * Revision 1.3 1998/01/10 00:01:47 curt - * Misc api changes and tweaks. - * - * Revision 1.2 1998/01/08 02:22:28 curt - * Continue working on basic features. - * - * Revision 1.1 1998/01/07 23:50:52 curt - * "area" renamed to "tile" - * - * Revision 1.1 1998/01/07 23:23:40 curt - * Initial revision. - * - * */ - - diff --git a/Scenery/tileutils.h b/Scenery/tileutils.h deleted file mode 100644 index 0031845c4..000000000 --- a/Scenery/tileutils.h +++ /dev/null @@ -1,104 +0,0 @@ -/************************************************************************** - * tileutils.h -- support routines to handle dynamic management of scenery tiles - * - * Written by Curtis Olson, started January 1998. - * - * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef _TILEUTILS_H -#define _TILEUTILS_H - - -struct bucket { - int lon; /* longitude (-180 to 179) */ - int lat; /* latitude (-90 to 89) */ - int x; /* x (0 to 7) */ - int y; /* y (0 to 7) */ -}; - - -/* Generate the unique scenery tile index containing the specified - lon/lat parameters. - - The index is constructed as follows: - - 9 bits - to represent 360 degrees of longitude (-180 to 179) - 8 bits - to represent 180 degrees of latitude (-90 to 89) - - Each 1 degree by 1 degree tile is further broken down into an 8x8 - grid. So we also need: - - 3 bits - to represent x (0 to 7) - 3 bits - to represent y (0 to 7) */ -long int gen_index(struct bucket *p); - - -/* Parse a unique scenery tile index and find the lon, lat, x, and y */ -void parse_index(long int index, struct bucket *p); - - -/* Build a path name from an tile index */ -void gen_base_path(struct bucket *p, char *path); - - -/* offset an bucket struct by the specified amounts in the X & Y direction */ -void offset_bucket(struct bucket *in, struct bucket *out, int x, int y); - - -/* Given a lat/lon, find the "bucket" or tile that it falls within */ -void find_bucket(double lon, double lat, struct bucket *p); - - -/* Given a lat/lon, fill in the local tile index array */ -void gen_idx_array(struct bucket *p1, struct bucket *tiles, - int width, int height); - - -#endif /* _TILEUTILS_H */ - - -/* $Log$ -/* Revision 1.6 1998/01/22 02:59:42 curt -/* Changed #ifdef FILE_H to #ifdef _FILE_H -/* - * Revision 1.5 1998/01/14 02:19:05 curt - * Makde offset_bucket visible to outside. - * - * Revision 1.4 1998/01/13 00:23:12 curt - * Initial changes to support loading and management of scenery tiles. Note, - * there's still a fair amount of work left to be done. - * - * Revision 1.3 1998/01/10 00:01:48 curt - * Misc api changes and tweaks. - * - * Revision 1.2 1998/01/08 02:22:28 curt - * Continue working on basic features. - * - * Revision 1.1 1998/01/07 23:50:52 curt - * "area" renamed to "tile" - * - * Revision 1.1 1998/01/07 23:23:40 curt - * Initial revision. - * - * */ - -