tsmApi Change Log
Tue Jul 30 14:50:09 2002 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c: add Mike McCann's changes for writing the GeoVRML
EXTERNPROTO URLs. Also fixed a bug that caused make_geovrml to
fail if no -touch option was given.
Thu Jul 18 09:50:15 2002 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmWriteRows.c: missing variable parameter in error printf()
2002-03-26 <Martin Reddy@HEATHER>
* tsmGeoVRML.c: convert all \% escape sequences to %% for all
printf style strings. MSVC warns that this is not recognized.
2002-03-17 <Martin Reddy@HEATHER>
* tsmWriteRows.c (tsmWriteRows_convertTileFormat): update the
check for a word overflow when downsampling from 32-bit to 16-bit
* tsmReadRowsRAW.c (tsmReadRowsRAW_new): check that the file is an
integral multiple of the specified pixel size. If not, issue a
warning message as this can corrupt the tile set.
2002-03-15 <Martin Reddy@HEATHER>
* tsmWriteRows.c (tsmWriteRows_new): initialize a variable to hold
the number of resampling overflows when converting from 32-bit ->
16-bit etc.
(tsmWriteRows_destroy): output a warning message if any resampling
errors occured during this pyramid creation process.
(tsmWriteRows_convertTileFormat): use PR_ntohl and friends to make
sure that we resample data correctly on little endian machines
such as Intels. Also record any occurences when we overflow during
a downsample of data values such as 32-bit to 16-bit.
* tsmWriteRowsPPM.c: removed - not used anywhere
* tsmWriteRowsPPM.h: removed - not used anywhere
2002-03-13 Lee Iverson <leei@ece.ubc.ca>
* tsmExtProts.h (tsmRequestNotifyCB): New definition. Type of
function to receive the tsmRequestNotifyReceive callback.
* tsmHost_web.c (tsmReaderThread_host): Grab requestLists
before reading tile and use that for notification.
* tsmRequest.c (struct tsmRequestList_): Use tsmRequestNotifyCB
(tsmRequestNotifyReceive): Use tsmRequestNotifyCB
(tsmRequestReceive): Deliver tile whether found in list or not.
Still remove it if found though.
* tsmRequest.h (tsmRequestReceive): Add new received argument.
* tsmRequestSrv.c (tsmReqReceivers): New. Returns a copy of the
current request list for a request.
(tsmReqServerQueueTile): Use reqLists argument to process tile.
Notify all request lists, not just those that still include it.
* tsmRequestSrv.h (tsmReqReceivers): New decl.
(tsmReqServerQueueTile): Add reqLists argument.
* tsmTile_local.c (tsmReaderThread_local): Grab requestLists
before reading tile and use that. Thus, it is the requestList
at the time we start to read that is used to communicate updates.
2002-03-11 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmReadRowsDEM.c: applied fix for DEM file reader, merged from
fix made to DEM2GeoEG utility
2002-02-15 Lee Iverson <leei@ece.ubc.ca>
* Makefile.in: Regen with automake 1.5
* aclocal.m4: Ditto
* config.h.in: Ditto
* config.guess, config.sub: Delete.
* configure.in: Find and use libpng library
* configure: Regen with autoconf 2.52
* tsmHost_web.c (tsmAddRequest_host): Add heap push tracing.
(tsmReaderThread_host): Only enable ghttp_debug for debug level 3.
Add heap push/pop tracing.
2002-01-27 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c: added recent updates from Mike McCann
2001-12-20 <Martin Reddy@HEATHER>
* tsmUtils.c (tsmStringCat): Concatenates a string onto the end of
a (possibly) existing string, growing the size of the original
string and returning its (potentially) new address as the
result
Mon Dec 17 11:05:44 2001 <reddy@MAGNOLIA>
* tsmImage.c (tsm_png_read): [new func] provides support for
reading PNG files in the tsmReadImage() function. This provides
support for PNG textures in VRML models within TerraVision.
Thu Dec 13 17:29:07 2001 <reddy@MAGNOLIA>
* tsmUrlToFile.c (tsmDoesUrlExist): updated to correctly deal with
local host URLs too.
Thu Dec 13 11:03:18 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmDoesUrlExist): create a convenience function
to tsmUrlExists without the http conn param.
Tue Nov 20 10:52:05 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c: include Mike McCann's edits to add gzipped support
for .wrl files (.wrz).
Mon Nov 12 11:50:15 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecParse.c (tspParseTspecLine): parse out the sky,
two-sided, view-from-below, and origin-altitude entries from the
tspec file.
Fri Nov 9 11:49:38 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c: updated sources from Mike McCann to include the
specification of a max range for GeoTouchSensor LODs and some
minor bug fixes
Tue Oct 30 10:29:02 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.h: Merge in updates from Mike McCann to add GeoOrigin
support to the GeoElevationGrids creation interface
* tsmGeoVRML.c: Merge in updates from Mike McCann of MBARI to
support GeoOrigin, a lat/long HUD display, and GeoTouchSensor
expansion of tiles.
Wed Sep 19 14:30:41 2001 <reddy@MAGNOLIA>
* tsmUtils.c (tsmSystem): new function - executes a command. Uses
system() under Unix and CreateProcess() under Windows.
(tsmShowUrl): if running under Windows, first try to run the
default web browser by doing a $COMSPEC /c start <url>
2001-08-16 Lee Iverson <leei@AI.SRI.COM>
* TsTileSpecDecs.x (struct CoordTspec): Add originAltitude.
(struct Pyramid): Add sky, twoSided, fromBelow.
* TsTileSpecDecs.h: Regen
* TsTileSpecDecs_xdr.c. Regen.
* TsTileSpecGen.c (tspCreatePyramid): Initialize new pyramid
fields from params.
* TsTileSpecIn.c (tspReadPyramidTspec1): Read new fields from
tspec.
(tspReadCoordTspec1): Read originAltitude value.
* TsTileSpecOut.c (tspSaveCoordTspec_fp): Write out
originAltitude.
(tspSavePyramidTspec_fp): Write out new fields.
* tsmCreate.h (struct TsmTspecParams): Add fields for altitude,
sky, two_sided, and view_from_below.
* tsmVRML.c (tsmWriteGeotile): Clean up unused variables.
2001-07-25 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmHost_web.c (tsmReaderThread_host): Actually retry requests up
to three times.
* tsmRequestSrv.c (tsmReqServerQueueTile): Consider a tile
received if *any* of the request lists successfully receive it.
Free tileHeader if tile was received.
Thu Jul 19 15:58:54 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmArg.c (tsmParseInitArgs): initialise the tracing settings
when a command line program uses -debug
* tsmTile_wms.c (tsmWMSReadNextTile): improved error messages from
a WMS tile failure. Now differentiates between a corrupt tile and
an unknown file format.
* tsmWMS.c (tsmWMSGetCapabilities): set the format ID
appropriately and favour using JPEG as the tile request format
instead of LRBT when talking to a Web Map Server.
* tsmWMS.h (TSM_WMS_FORMAT_JPEG): create a simple #define list for
the WMS format to be used for tile requests. This lets us easily
ascertain the format without doing a strcmp.
2001-07-19 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile.c (struct ReceiveClosure): Use unsigned bitfield for
status.
2001-07-12 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmRequest.c (tsmRequestSubmit): Clean up trace code.
(tsmRequestClaim): Empty readyList when making available.
(tsmRequestReceive): Expand trace verbosity.
* tsmRequestSrv.c (tsmReqElemReprioritize): Increase level of
tracing.
(tsmReqServerRescind): Improve tracing, including flagging all
branches of conditional.
(tsmReqServerSubmit): Improve tracing.
(tsmReqServerClaimList): Ditto.
Fri Jun 29 16:06:17 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmWMS.c (tsmWMSGetCapabilities): clean up the http connection
when done getting the Capabilities XML
2001-07-10 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmRequestSrv.c (tsmReqElemSetStatus): Bump up trace level to 2
(tsmReqElemAllocate): Fix typo - doh!
(tsmReqElemReprioritize): Bump up trace level of reconstruction to 3
Fix trace argument in reconstruction
(tsmReqServerSubmit): Show conn.generic in trace message.
* tsmTile_local.c (tsmAddRequest_local): Show conn.generic in
trace message.
2001-07-09 Lee Iverson <leei@canoe.ai.sri.com>
* tsmRequestSrv.c (tsmReqServerSubmit): Indent for tracing.
(tsmReqServerAssignRequests): Tag and indent for tracing.
* tsmTile_local.c (tsmAddRequest_local): Indent for tracing.
2001-07-09 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnectionInt.h (typedef ActualConnection): Remove.
(struct ActualConnection_): Remove.
* tsmHost_web.c (tsmRemoveRequest_host): Reset conn.generic
* tsmRequestSrv.c (tsmReqElemCreate): Initialize conn.generic.
(tsmReqElemReprioritize): Add better tracing.
(tsmReqServerRescind): Use conn.generic
(tsmReqServerSubmit): Show existing priority.
* tsmRequestSrv.h (struct tsmReqElem_): Delete conn.actual.
* tsmTile_local.c: Include <assert.h>
(tsmAddRequest_local): Consolidate with tsmAddRequestActual_local
(tsmRemoveRequest_local): Consolidate with
tsmRemoveRequestActual_local
(tsmReprioRequest_local): Consolidate with
tsmReprioRequestActual_local
* tsmConnect_dpss.h (struct TsmConnectionDpss): Replace aconn with
TsmConnectionCommon struct.
* tsmConnection_dpss.c (tsmDisconnect_dpss): Pass TsmConnection
(tsmBeginLogging_dpss): Ditto.
(tsmEndLogging_dpss): Ditto.
* tsmTile_dpss.c (tsmStartRequestThread_dpss): Cope with removed
ActualConnection.
* tsmTspec_dpss.c (tsmReadTspec_dpss): Cope with removed
ActualConnection.
(tsmWriteTspec_dpss): Ditto.
2001-07-09 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsm.h: Don't include (and thus expose) tsmWMS.h
* tsmConnectionParamsInt.h: Don't include tsmWMS.h since this has
too large a dependency footprint.
* tsmConnect_wms.h: Include tsmWMS.h here.
* tsmDatabase_wms.c: ... and here
* tsmHost_web.c: ... and here
* tsmTspec_wms.c: ... and here
* tsmWMS.c: ... and here
* tsmInternal.h (typedef tsmWMS): Forward decl for opaque refs.
* tsmWMS.h (struct tsmWMS_): Adapt to forward ref.
2001-07-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile.c (tsmAllocReadTile): More careful version of Martin's
patch of Mon Jun 25. We still need to ensure that we got the
correct notification and that we weren't interrupted.
Fri Jun 29 16:06:17 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_wms.c (tsmWMSReadNextTile): support reading JPEG tiles
in addition to raw format tiles
* tsmWMS.c (tsmWMSGetCapabilities): clean up the XML parse tree
when done
(tsmWMSGetCapabilities): look for a global SRS and global
ScaleHint tag and use this if a Layer does not define either. Then
try using the ScaleHint tag when the layer resolution is not
defined.
(tsmWMSAddLayer): remove new line characters from all layer
strings (esp. description) as these case our database parser
problems.
* tsmTspec_wms.c (tsmDoesTspecExist_wms): support both LAYERS= and
LAYER= for finding a dataset name in a WMS URL
(tsmReadTspec_wms): ditto
* tsmTile_wms.c (tsmWMSReadNextTile): extract layer name from a
URL using LAYERS= parameter, and then try LAYER=
* tsmWMS.c (tsmWMSDatasetUrl): parameter is LAYERS, not LAYER
Thu Jun 28 17:21:09 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* logging.c (NetLoggerWriteString): do a cast of a PRTime to long
to avoid gcc-dependent symbol under Solaris
Tue Jun 26 17:14:16 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile.c (tsmAllocReadTile): add tile coordinate to error
messages for more easy debugging
Mon Jun 25 14:17:54 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmHost_web.c (tsmReaderThread_host): break out of inifinite
loop if a tile request returns TSM_NODATA
* tsmTile.c (tsmAllocReadTile): break out of PR_WaitCondVar loop
if the function returns PR_SUCCESS. Previously the value of
rcv.buf was used, which meant that the loop would hang if a NULL
tile buffer was returned (in the case of TSM_NODATA for instance)
* tsmTile_local.c (tsmReaderThread_local): break out of infinite
loop if a tile is requested but the data does not exist (i.e. when
a TSM_NODATA is returned).
* tsmTspec_wms.c (tsmReadTspec_wms): deal with fp rounding errors
when trying to compute a tileset's pixel width and height based
upon the geographic bbox and resolution returned by a WMS.
* tsmWMS.c (tsmWMSGetException): fix bug in locating the error
description tag in a WMS Service Exception XML.
Thu Jun 21 14:06:01 2001 <reddy@MAGNOLIA>
* tsmConnection_web.c (tsmConnect_web): only initialise the http
specific connection stuff if the common initialization succeeded.
* tsmConnection_dpss.c (tsmConnect_dpss): ditto
* tsmConnection_local.c (tsmConnect_local): ditto
* tsmConnection_wms.c (tsmConnect_wms): ditto
2001-06-20 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnectCommon): Disconnect on failure.
(tsmDisconnectCommon): Don't free connect here.
* tsmConnection_local.c (tsmConnect_local): Immediately return if
tsmConnectCommon fails.
(tsmDisconnect_local): Free connection memory here.
* tsmConnection_web.c (tsmConnect_web): Immediately return if
tsmConnectCommon fails.
(tsmDisconnect_web): Free connection memory here.
* tsmConnection_wms.c (tsmConnect_wms): Immediately return if
tsmConnectCommon fails.
(tsmDisconnect_wms): Free connection memory here.
Wed Jun 20 15:42:17 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_wms.c: Add #include "tsmRequest.h"
* tsmTspec_wms.c: Add #include "tsmConnectionParamsInt.h"
* tsmConnection_wms.c: Add #include "tsmConnectionParamsInt.h"
Mon Jun 18 14:50:19 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase_local.c (tsmParseDatabaseLine): add parsing for the
new tilesize and overlap fields of the database
* tsmDatabase.c (tsmPrintDataSet): output the new tilesize and
overlap field values
(tsmUpdateDatabaseFromServerCB): read the tilesize and overlap
values from the dataset's tspec file and fill in the fields in the
TsmDataSet structure
* tsmDatabase.h: added tilesize and overlap fields to TsmDataSet
* tsmDatabase.c (tsmReadServer): add support for WMS protocol when
reading a terrain database
(tsmPrintDatabase): update the URL and formatting for the Dataset
Database
2001-06-17 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTspec.c (tsmReadTspec): call the tsmReadTspec_wms routine to
create a tspec on the fly for a Web Mapping Server dataset
* tsmPurl.c: if a URI has a question mark in it, then the protocol
is determined to be a Web Mapping Server
* tsmConnection.c (tsmConnect): do WMS-specific initialization if
the Purl is for a WMS URL
* tsmPurlDefns.x: added tsmWMS to the purl TsmProtocol enum
Fri Jun 15 10:09:38 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c (tsmSetParam): add TSM_PARAM_WMS support
* tsmConnectionParams.h (TSM_PARAM_WMS): add TSM_PARAM_WMS
connection parameter to specify a tsmWMS structure
* tsmConnection.h: add TSM_WMS to TsmConnectionType
2001-06-19 Lee Iverson <leei@canoe.ai.sri.com>
* tsmUrlToFile.c (tsmOpenStream): Instead of checking for "r",
check for the absence of 'w' character. This was breaking HTTP
FeatureTexLoad.
2001-06-19 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmHost_web.c: Include "tsmRequestSrv.h"
(tsmAddRequest_host): Register status change with tsmReqElemAllocate
(tsmReaderThread_host): Register status change with tsmReqElemReading
and tsmReqElemAllocate
(
* tsmInternal.h: Don't include "tsmConnectionInt.h" or
"tsmConnectionParamsInt.h"
(struct tsmRequestServer): Move typedef to here.
(struct tsmReqElem): Move typedef to here.
* tsmRequestSrv.c: Include "tsmConnectionInt.h"
(tsmReqElemSetStatus): New. Register and report a status change
for tsmTileReqElem.
(tsmReqElemAllocate): New. Register a chnage to reqAllocated.
(tsmReqElemReading): New. Register a change to reqReading.
(tsmReqElemUpdate): Change status with tsmReqElemSetStatus
(tsmReqElemCreate): Initialize idx.
(tsmReqServerQueueTile): Change status with tsmReqElemSetStatus
(tsmReqServerDequeueTile): Ditto.
* tsmRequestSrv.h (struct tsmRequestServer): Move typedef to
tsmInternal.h
(enum tsmReqStatus): Add reqReading and reqDelivered status.
(struct tsmReqElem): Move typedef to tsmInternal.h
(tsmReqElemAllocate): New decl.
(tsmReqElemReading): New decl.
* TsTileSpecUtils.c: Include "tsmConnectionInt.h"
* tsmArg.c: Include "tsmConnectionInt.h"
* tsmChecksum.c: Include "tsmConnectionInt.h"
* tsmConnect_dpss.h: Include "tsmConnectionInt.h"
* tsmConnect_local.h: Include "tsmConnectionInt.h"
* tsmConnect_web.h: Include "tsmConnectionInt.h"
* tsmConnection.c: Include "tsmConnectionInt.h"
Include "tsmConnectionParamsInt.h"
Include "tsmRequestSrv.h"
* tsmConnectionInt.h: Don't include "tsmRequestSrv.h"
* tsmConnectionParams.c: Include "tsmConnectionParamsInt.h"
* tsmConnection_local.c: Include "tsmConnectionParamsInt.h"
Include "tsmRequestSrv.h"
* tsmConnection_web.c: Move ghttp.h include inside HAVE_HTTP
Include "tsmConnectionParamsInt.h"
Include "tsmRequestSrv.h"
* tsmCreate.c: Include "tsmConnectionInt.h"
Include "tsmConnectionParamsInt.h"
* tsmEmulate.c: Include "tsmConnectionInt.h"
* tsmGeoVRML.c: Include "tsmConnectionParamsInt.h"
* tsmImage.c: Include "tsmConnectionInt.h"
* tsmLocalDbase.c: Include "tsmConnectionInt.h"
* tsmTile.c: Include "tsmConnectionInt.h"
* tsmTile_local.c: Include "tsmRequestSrv.h"
* tsmTile_web.c: Include "tsmRequestSrv.h"
* tsmTspec.c: Include "tsmConnectionInt.h"
Include tsmConnectionParamsInt.h"
* tsmTspec_local.c: Include "tsmConnectionParamsInt.h"
* tsmTspec_web.c: Include "tsmConnectionParamsInt.h"
* tsmUtils.c: Include "tsmConnectionInt.h"
* tsmVRML.c: Include "tsmConnectionInt.h"
Include "tsmConnectionParamsInt.h"
* tsmVRMLUtils.c: Include "tsmConnectionParamsInt.h"
Tue Jun 12 15:04:52 2001 <reddy@MAGNOLIA>
* tsmTile.c (tsmTileReqAdd): return FALSE if the requested level
is not valid, or if the tile (x,y) does not exist in the level.
2001-06-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmHost_web.c (tsmReaderThread_host): Improve trace messages.
* tsmTile_local.c (tsmReaderThread_local): Improve trace messages.
2001-06-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmHost_web.c (tsmReaderThread_host): Enable ghttp_dbeug when
trace level>= 2.
Thu Jun 7 14:26:48 2001 Lee Iverson <leei@AI.SRI.COM>
* tsmHost_web.c (tsmAddRequest_host): Add tracing.
(tsmRemoveRequest_host): Add tracing.
(trace_req): New. Callback for heap_forall. Prints requests.
(tsmReaderThread_host): Add tracing of heap contents when not empty.
2001-06-07 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmHost_web.c (tsmReaderThread_host): Exit properly on interrupt.
Wed Jun 6 22:57:05 2001 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmUrlToFile.c (tsmReadHttpFile): Properly initialize and check
status of redirect_url.
Thu May 31 11:05:42 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmJPEG.c: implement the skip_input_data callback for the jpeg
decompressor. Didn't seem to need this for TV JPEG TIFFs, but it
was needed to decompress TerraServer JPEG files.
* tsmUrlToFile.c (tsmReadHttpFile): check for and correctly handle
http redirect results when grabbing an http file (301 and 302).
* tsmJPEG.c (tsmJPEGCompress): add a tsmJPEGCompress function that
allows any buffer size to be compressed. The tsmJPEGCompressTile
function only handled buffers of one tile size.
Sat May 12 16:06:16 2001 <reddy@MAGNOLIA>
* tsmArg.c (tsmParseVRMLArgs): support a -onesided option for the
creation of GeoVRML geometry.
* tsmConnectionParams.h (TSM_PARAM_SOLID): added a new connection
parameter: TSM_PARAM_SOLID to determine whether GeoVRML geometry
is created one- or two-sided.
* tsmGeoVRML.c (TsmGeoVRML_uv2gcc): fix transposed lat/long pair
(TsmGeoVRML_gcc2uv): fix transposed lat/long pair
Fri May 11 16:39:19 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmReadRowsTIFF.c (tsmParseCreateParams_TIFF): support UTM
GeoTIFF images as output by ERDAS Imagine.
Fri Apr 20 14:09:37 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_local.c (tsmConnect_local): only create the TIFF
read level locks if we have a read connection, otherwise we
reference a NULL tspec.
(tsmDisconnect_local): only free the read level locks if they were
actually allocated (not done for a write connection).
* logging.c (NetLoggerWriteString): fix the generation of
NetLogger timestamps using the NSPR time functions
Thu Apr 12 10:43:57 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_local.c (readNextTile): move the logging of TV_TILE_READ
events down into the actual read function for localdisk.
* tsmHost_web.c (readNextTile): move the logging of TV_TILE_READ
events down into the actual read function for http.
Tue Apr 10 13:32:28 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmLog): lock down the function and fix a bug
which could cause competing threads to write over each others log
events.
Mon Apr 9 13:09:23 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_web.c (tsmAddRequest_web): create a NetLogger
TV_TILE_REQ event.
* tsmTile_local.c (tsmAddRequestActual_local): create a NetLogger
TV_TILE_REQ event.
2001-03-14 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmRequestSrv.c (tsmReqServerThread): Initialize status to
PR_SUCCESS in case tsmReqServerNextReady() returns successfully.
2001-03-07 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmHost_web.c: Add (oops)!
* Makefile.in: Regen with automake-1.4d
* aclocal.m4: Ditto.
* missing: Upgrade to automake-1.4d
* config.h.in: Regen
* configure: Regen
2001-03-07 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnect_web.h: Delete !HOST_CONNECT branch. Now always used.
(struct TsmConnectionHttp): Delete.
(struct TsmConnectionHTTP): Delete !HOST_CONNECT branch
* tsmConnection_web.c: Delete !HOST_CONNECT branch. Now always used.
* tsmTile_web.c: Delete !HOST_CONNECT branch. Now always used.
2001-03-02 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnect_web.h (TsmConnectionHTTP): New. HTTP-specific
subclass of TsmConnectionCommon. Conditionalize on HOST_CONNECT
(struct TsmConnectionHttp): Make tsm_conn field a
TsmConnectionHTTP
(tsmOpenHttpConnection, etc.): Move decls to tsmIntProts.h
(tsmOpenHostConnection_web): New decl.
(tsmCloseHostConnection_web): New decl.
(tsmAddRequest_host): New decl.
(tsmRemoveRequest_host): New decl.
(tsmReprioRequest_host): New decl.
(tsmCheckTileFormat_host): New decl.
(tsmCheckTIFFFormat_host): New decl.
* tsmConnection.c (tsmDisconnectCommon): Don't destroy
non-existent lock.
* tsmConnectionInt.h (struct TsmConnectionCommon): Remove
type-specific fields: lock, numReaders, nextReader, readers,
writer and aux.
* tsmConnection_web.c (tsmConnect_web): Adapt for use of
TsmConnectionHTTP and TsmConnectionHttp* instead of
ActualConnection.
Initialize properly when HOST_CONNECT defined.
(tsmActualConnect_web, tsmDisconnectActual_web): Adapt for use of
TsmConnectionHTTP and TsmConnectionHttp* instead of
ActualConnection.
(tsmDisconnect_web): Disconnect properly when HOST_CONNECT defined.
* tsmTile_web.c: Conditionalize implementation on definition of
HOST_CONNECT.
#if !defined(HOST_CONNECT)
(tsmAddRequestActual_web, tsmRemoveRequestActual_web,
tsmReprioRequestActual_web, readNextTile,
tsmCheckTileFormatActual_web, tsmCheckTIFFFormatActual_web): Use
TsmConnectionHttp* instead of ActualConnection.
(tsmAddRequest_web): Pass proper value to tsmAddRequestActual_web
(tsmRemoveRequest_web): Pass proper value to
tsmRemoveRequestActual_web
(tsmReprioRequest_web): Pass proper value to
tsmReprioRequestActual_web
(tsmReaderThread_web): Pass correct value to readNextTile.
(tsmCheckTileFormat_web): Pass proper value to
tsmCheckTileFormatActual_web
(tsmCheckTIFFFormat_web): Pass proper value to
tsmCheckTIFFFormatActual_web
#endif
#if defined(HOST_CONNECT)
(tsmAddRequest_web): Call tsmAddRequest_host
(tsmRemoveRequest_web): Call tsmRemoveRequest_host
(tsmReprioRequest_web): Call tsmReprioRequest_host
#endif
* tsmConnect_local.h (struct TsmConnectionLocal): Make conn point
to a TsmConnectionLOCAL
(struct TsmConnectionLOCAL): New. Local file-specific subclass of
TsmConnection.
* tsmConnection_local.c (tsmConnect_local, tsmActualConnect_local,
tsmDisconnectActual_local, tsmDisconnect_local): Adapt for use
of TsmConnectionLOCAL and TsmConnectionLocal* instead of
ActualConnection.
* tsmTile_local.c (tsmAddRequestActual_local,
tsmRemoveRequestActual_local, tsmReprioRequestActual_local,
readNextTile, tsmCheckTileFormatActual_local,
tsmCheckTIFFFormatActual_local, tsmWriteTileActual_local): Use
TsmConnectionLocal* instead of ActualConnection.
(tsmAddRequest_local): Update call to tsmAddRequestActual_local.
(tsmRemoveRequest_local): Update call to
tsmRemoveRequestActual_local.
(tsmReprioRequest_local): Update call to
tsmReprioRequestActual_local.
(tsmReaderThread_local): Update call to readNextTile.
(struct TIFFHandle): Make connect field a TsmConnectionLOCAL.
(tiffCacheHandle): Use TsmConnectionLOCAL instead of
tsmConnection.
(tiffCacheClose): Update for change to TIFFHandle
(tsmReadTIFF_local): Update for change to TsmConnectionLOCAL
(tsmWriteTile_local): Update for change to TsmConnectionLOCAL and
tsmWriteTileActual_local.
(tsmWriteTILE_local, tsmWriteTIFF_local): Update for change to
TsmConnectionLOCAL.
(tsmCheckTileFormat_local): Update call to
tsmCheckTileFormatActual_local.
(tsmCheckTIFFFormat_local): Update call to
tsmCheckTIFFFormatActual_local.
* tsmIntProts.h (tsmOpenHttpConnection): Decl moved here from
tsmConnect_web.h.
(tsmCloseHttpConnection): Ditto.
(tsmUrlToMemory): Ditto.
(tsmUrlToFile): Ditto.
(tsmUrlToTempFile): Ditto.
(tsmUrlToBuffer): Ditto.
(tsmUrlMimeType): Ditto.
(tsmUrlExists): Ditto.
* tsmPyramidInfo_web.c: Remove #include "tsmConnect_web.h"
* tsmTspec_web.c: Remove #include "tsmConnect_web.h"
* tsmUrlToFile.c: Remove #include "tsmConnect_web.h"
(tsmReadHttpFile): Correct reuse and closure of http connection.
Make sure that it closes when connp is NULL.
2001-03-01 Lee Iverson <leei@Canada.AI.SRI.COM>
Remove entire ActualConnection-based virtual function
infrastructure and replace with direct virtual functions on
TsmConnection.
* tsmConnect_local.h (tsmDisconnect_local): Update decl.
(tsmAddRequest_local): Ditto.
(tsmReprioRequest_local): Ditto.
(tsmRemoveRequest_local): Ditto.
(tsmCheckTileFormat_local): Ditto.
(tsmCheckTIFFFormat_local): Ditto.
(tsmReadNextTile_local): Delete decl.
* tsmConnect_web.h (tsmDisconnect_web): Update decl.
(tsmAddRequest_web): Ditto.
(tsmReprioRequest_web): Ditto.
(tsmRemoveRequest_web): Ditto.
(tsmCheckTileFormat_web): Ditto.
(tsmCheckTIFFFormat_web): Ditto.
(tsmReadNextTile_web): Delete decl.
* tsmConnection.c (tsmConnectionVTable): Delete.
(tsmConnect): Modify to create TsmConnection structure by calling
type-specific factory methods. Move most initialization into...
(tsmConnectCommon): ...here. Generic connection initialization.
(makeActualConnection): Delete.
(tsmvDisconnect): Delete.
(tsmDisconnectCommon): New. Undo generic connection initialization
performed by tsmConnectionInit.
(tsmvBeginLogging): Remove call to tsmBeginLogging_actual
(tsmvEndLogging): Remove call to tsmEndLogging_actual
(tsmDisconnect_actual): Delete.
(tsmWriteTile_actual): Delete.
(tsmCheckTileFormat_actual): Delete.
(tsmCheckTIFFFormat_actual): Delete.
(tsmBeginLogging_actual): Delete.
(tsmEndLogging_actual): Delete.
(tsmAddRequest_actual): Delete.
(tsmRemoveRequest_actual): Delete.
(tsmReprioritizeRequest_actual): Delete.
(tsmvAddRequest): Delete.
(tsmvRemoveRequest): Delete.
(tsmvReprioritizeRequest): Delete.
(tsmWriteTile, tsmCheckTileFormat, tsmCheckTIFFFormat): Move to
tsmTile.c
(tsmBeginLogging, tsmEndLogging): Protect against null function
pointer.
* tsmConnectionInt.h (tsmConnect_web): Update decl as
HTTP-specific creation of TsmConnection.
(tsmConnect_dpss): Update decl as DPSS-specific creation of
TsmConnection.
(tsmConnect_local): Update decl as local file-specific creation of
TsmConnection.
(tsmConnectCommon): New decl.
(tsmDisconnectCommon): New decl.
(struct ActualConnectionVTable): Delete.
(struct ActualConnection): Remove vtable.
* tsmConnection_dpss.c (vtable_dpss): Change to TsmConnectionVTable
(tsmConnect_dpss): Modify to initialize the TsmConnection instead
of an ActualConnection.
(tsmActualConnect_dpss): New. Moved ActualConnection
initialization here from old version of tsmConnect_dpss
(tsmDisconnectActual_dpss): Renamed from tsmDisconnect_dpss
(tsmDisconnect_dpss): New. DPSS connection-specific disconnect.
* tsmConnection_local.c (vtable_local): Change to
TsmConnectionVTable
(tsmConnect_local): Modify to initialize the TsmConnection instead
of an ActualConnection.
(tsmActualConnect_local): New. Moved ActualConnection
initialization here from old version of tsmConnect_local
(tsmDisconnectActual_local): Renamed from tsmDisconnect_local
(tsmDisconnect_local): New. local file connection-specific
disconnect.
* tsmConnection_web.c (vtable_web): Change to TsmConnectionVTable
(tsmConnect_web): Modify to initialize the TsmConnection instead
of an ActualConnection.
(tsmActualConnect_web): New. Moved ActualConnection
initialization here from old version of tsmConnect_web
(tsmDisconnectActual_web): Renamed from tsmDisconnect_web
(tsmDisconnect_web): New. HTTP connection-specific disconnect.
* tsmIntProts.h (tsmDisconnect_actual): Delete decl.
(tsmCheckTileFormat_actual): Ditto.
(tsmCheckTIFFFormat_actual): Ditto.
(tsmBeginLogging_actual): Ditto.
(tsmEndLogging_actual): Ditto.
(tsmAddRequest_actual): Ditto.
(tsmRemoveRequest_actual): Ditto.
(tsmRemoveRequest_actual): Ditto.
(tsmReprioritizeRequest_actual): Ditto.
(tsmReadNextTile_actual): Ditto.
(tsmWriteTile_actual): Ditto.
* tsmTile.c (tsmvCheckTileFormat): Delete.
(tsmCheckTileFormat): Call TsmConnectionVTable.checkTileFormat
(tsmvCheckTIFFFormat): Delete.
(tsmCheckTIFFFormat): Call TsmConnectionVTable.checkTIFFFormat
(tsmvWriteTile): Delete.
(tsmWriteTile): Call TsmConnectionVTable.writeTile
* tsmTile_dpss.c (tsmWriteTileActual_dpss): Renamed from
tsmWriteTile_dpss.
(tsmWriteTile_dpss): New. Direct target of
TsmConnectionVTable.writeTile for DPSS connections.
* tsmTile_local.c (tsmAddRequestActual_local): Renamed from
tsmAddRequest_local.
(tsmAddRequest_local): New. Direct target of
TsmConnectionVTable.addRequest for local file connections.
(tsmRemoveRequestActual_local): Renamed from tsmRemoveRequest_local
(tsmRemoveRequest_local): New. Direct target of
TsmConnectionVTable.removeRequest for local file connections.
(tsmReprioRequestActual_local): Renamed from tsmReprioRequest_local
(tsmReprioRequest_local): New. Direct target of
TsmConnectionVTable.reprioRequest for local file connections.
(tsmWriteTileActual_local): Renamed from
tsmWriteTile_local.
(tsmWriteTile_local): New. Direct target of
TsmConnectionVTable.writeTile for local file connections.
(tsmCheckTileFormatActual_local): Renamed from
tsmCheckTileFormat_local
(tsmCheckTileFormat_local): New. Direct target of
TsmConnectionVTable.checkTileFormat for local file connections.
(tsmCheckTIFFFormatActual_local): Renamed from
tsmCheckTIFFFormat_local
(tsmCheckTIFFFormat_local): New. Direct target of
TsmConnectionVTable.checkTIFFFormat for local file connections.
* tsmTile_web.c (tsmAddRequestActual_web): Renamed from
tsmAddRequest_web.
(tsmAddRequest_web): New. Direct target of
TsmConnectionVTable.addRequest for HTTP connections.
(tsmRemoveRequestActual_web): Renamed from tsmRemoveRequest_web
(tsmRemoveRequest_web): New. Direct target of
TsmConnectionVTable.removeRequest for HTTP connections.
(tsmReprioRequestActual_web): Renamed from tsmReprioRequest_web
(tsmReprioRequest_web): New. Direct target of
TsmConnectionVTable.reprioRequest for HTTP connections.
(tsmCheckTileFormatActual_web): Renamed from
tsmCheckTileFormat_web
(tsmCheckTileFormat_web): New. Direct target of
TsmConnectionVTable.checkTileFormat for HTTP connections.
(tsmCheckTIFFFormatActual_web): Renamed from
tsmCheckTIFFFormat_web
(tsmCheckTIFFFormat_web): New. Direct target of
TsmConnectionVTable.checkTIFFFormat for HTTP connections.
* tsmUrlToFile.c: Update some comments to reflect recents changes.
2001-02-28 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (libtsmApi_a_SOURCES): Add tsmHost_web.c
* Makefile.in: Regen.
* tsmHost_web.c: New file. Host-oriented web interface. First
pass, not currently used.
Deprecate _actual virtual functions in favour of direct virtual
functions on TsmConnection. Will increase flexibility and allow
more variation on implementation behing the connection.
* tsmConnect_web.h (tsmOpenHttpConnection): Update decl.
(tsmCloseHttpConnection): Ditto.
(tsmUrlToMemory): Ditto.
(tsmUrlToFile): Ditto.
(tsmUrlToTempFile): Ditto.
(tsmUrlToBuffer): Ditto.
(tsmUrlMimeType): Ditto.
(tsmUrlExists): Ditto.
* tsmConnection.c (tsmConnectionVTable): Define default virtual
function table.
(tsmConnect): Assign default vtable to TsmConnection.
Initialize lock and nextReader index.
(tsmvDisconnect): New. Default virtual function for
TsmConnectionVTable.disconnect
(tsmvBeginLogging): New. Default virtual function for
TsmConnectionVTable.beginLogging
(tsmvEndLogging): New. Default virtual function for
TsmConnectionVTable.endLogging
(tsmvAddRequest): New. Default virtual function for
TsmConnectionVTable.addRequest
(tsmvRemoveRequest): New. Default virtual function for
TsmConnectionVTable.removeRequest
(tsmvReprioritizeRequest): New. Default virtual function for
TsmConnectionVTable.reprioritizeRequest
(tsmDisconnect, tsmAddRequest, tsmRemoveRequest,
tsmReprioritizeRequest, tsmWriteTile, tsmCheckTileFormat,
tsmCheckTIFFFormat, tsmBeginLogging, tsmEndLogging): Convert to
virtual functions.
* tsmConnectionInt.h (struct TsmConnectionVTable): New virtual
function table for TsmConnection.
(struct TsmConnectionCommon): Add vtable field for
TsmConnectionVTable. Add lock field and nextReader index.
* tsmConnection_web.c (tsmConnect_web): Update call to
tsmUrlExists.
(tsmDisconnect_web): Clear cached connection on close.
* tsmPurl.c (tsmParseUrl): Return NULL for empty url.
* tsmRequestSrv.c (struct tsmRequestServer): Remove assign field.
(tsmReqElemCreate): Initialize connect to server connection.
(tsmReqServerCreate): Don't initialize assign
(tsmReqElemReprioritize): Call TsmConnection method
tsmReprioritizeRequest.
(tsmReqServerRescind): Call TsmConnection method tsmRemoveRequest
(tsmReqServerAssignRequests): Don't implement assignment algorithm
here. Just use TsmConnection method tsmAddRequest
* tsmRequestSrv.h (struct tsmReqElem): Add connect field for
reference to TsmConnection. Add HostConnection reference to
union.
* tsmTile.c (tsmCheckTileFormat, tsmCheckTIFFFormat,
tsmWriteTile): Moved to tsmConnection.c as virtual function
calls.
(tsmvCheckTileFormat, tsmvCheckTIFFFormat, tsmvWriteTile): Default
assignments for virtual functions.
* tsmTile_local.c (tsmAddRequest_local): Store conn.actual
association here.
(tsmRemoveRequest_local): Detach conn.actual association
* tsmTile_web.c (tsmAddRequest_web): Store conn.actual association
here.
(tsmRemoveRequest_web): Detach conn.actual association
(readNextTile): Update interface to tsmUrlToBuffer
(tsmCheckTileFormat_web): Update interface to tsmUrlExists
(tsmCheckTIFFFormat_web): Ditto.
* tsmUrlToFile.c (tsmOpenHttpConnection): Change to use a
http_trans_conn* directly.
(tsmCloseHTTPConnection): Ditto.
(tsmReadHttpFile): Change to use a http_trans_conn** directly.
Connection caching is handled by storing values the location
referred to.
(tsmUrlToMemory, tsmUrlToBuffer, tsmUrlToFile, tsmUrlToTempFile,
tsmUrlMimeType, tsmUrlExists): Ditto.
Wed Jan 31 11:17:51 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmRequestSrv.c (tsmReqServerAssignRequests): added Jason Fox's
mod to lock down the function. This was causing a race condition
under fast Windows machines.
Wed Jan 17 14:27:51 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmArg.c (tsmParseVRMLArgs): remove unused options
Mon Jan 15 16:45:49 2001 <reddy@MAGNOLIA>
* tsmDatabase_local.c(tsmReadServer_local): created a new
implementation of this function that uses the MSVC functions
FindFirstFile/FindNextFile as the POSIX opendir/readdir functions
are not available under MSVC.
Sun Jan 14 17:56:34 2001 <reddy@MAGNOLIA>
* tsmDatabase_local.c (tsmReadServer_local): #ifndef MSVC this
function as it uses opendir/readdir which are POSIX functions but
not supported by MSVC - need to recode in portable functions!
Tue Jan 9 15:55:47 2001 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c (TsmGeoVRML_createGeoElevationGrid): fix the
calculation of valid tile sizes for edge tiles.
(TsmGeoVRML_writeAllTiles): improve the output of status
information as we go
(TsmGeoVRML_writeHTMLFile): output an HTML comment saying that the
file was produced with tsmApi from SRI. Also, create the directory
for the index.html file if it does not exist.
(TsmGeoVRML_progress): do an fflush in order to get the progress
display
(TsmGeoVRML_writeAllTiles): create the index.html file at the
start of the tile generation process, not at the end.
(TsmGeoVRML_normalize): only normalize if the length is != 0.0
(TsmGeoVRML_calcNormal): compare oi (x,y) against oi pixel bounds,
not the DEM one. Stops all those 0xnan normals being generated.
Sun Jan 07 13:00:21 2001 <reddy@MAGNOLIA>
* tsmUtils.c (tsmMakePathAbsolute): [new func] prepends an
absolute path to a filename if it is relative.
Wed Dec 20 16:15:21 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c (tsmDescribeImportFormat): add the text "big endian"
to the format description for raw and lrbt to show that we expect
binary data in big-endian format (Unix type, not PC).
2000-12-15 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmDatabase.c (tsmRemoveMapFromDatabasePos): Provide doc header.
(tsmRemoveModelFromDatabasePos): Ditto.
* tsmReadRowsDEM.c (tsmReadRowsDEM_saveDEMAsRAW): Predeclare static.
* tsmConnection_web.c (tsmDisconnect_web): Don't close HTTP
connection until after thread shutdown.
2000-12-13 Lee Iverson <leei@canoe.ai.sri.com>
* tsmReadRowsGIF.c (tsmParseCreateParams_GIF): Return FALSE.
* tsmDatabase.c (tsmRemoveServerSetsFromDatabase): Remove maps
using tsmRemoveMapFromDatabasePos and don't skip checking next
one. Ditto for models.
(tsmRemoveMapFromDatabasePos): New. Remove map at index.
(tsmRemoveMapFromDatabase): Find then use
tsmRemoveMapFromDatabasePos.
(tsmRemoveModelFromDatabasePos): New. Remove model at index.
(tsmRemoveModelFromDatabase): Find then use
tsmRemoveModelFromDatabasePos.
2000-12-11 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnect): Store purl into location to clean
up memory leak.
Thu Nov 30 17:59:55 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c: removed unused variables "geo_width" and
"geo_height"
* tsmVRMLUtils.c (tsmGetTexCoords): removed unused variables
"maxpix_x" and "maxpix_y"
(tsmCalcRange): commented out unused variables "geo_width" and
"geo_height"
(tsmTileElev): removed unused variable "polyx" and "polyy"
* tsmImageUtils.c (tsmTileToRgb): removed unused variables "i10",
"i01", and "numPixels"
* tsmTile_local.c (tsmCheckTileFormat_local): remove unused
variable "connect"
(tsmCheckTIFFFormat_local): removed unused variable "connect"
* tsmWriteRows.c (tsmWriteRows_new): reference the SimpleTileSet
starting from the minLevel, not zero. Do not assume that the start
level is 0. Bug reported by Jerry Isdale.
(tsmWriteRows_write): provide more verbose error output when an
invalid level number is found. Suggestion from Jerry Isdale.
Also, correctly offset the level number with the minLevel value,
as above.
(tsmWriteRows_writeTiles): provide more verbose error output when
an invalid level number is found and correctly offset the level
number with the minLevel value, as above. Bug report from Jerry
Isdale.
Mon Nov 27 15:12:59 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmFootprintToLatLong): implement approximate
conversion between an LVCS bounding box and a GDC bounding box
(assumes 1 deg == 100 km).
2000-11-22 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnect_local.h (tsmReprioRequest_local): New decl.
* tsmConnect_web.h (tsmReprioRequest_web): New decl.
* tsmConnection.c (tsmReprioritizeRequest_actual): New.
Call reprioritizeRequest virtual function.
* tsmConnectionInt.h (ActualConnectionVTable): Add
reprioritizeRequest virtual function.
* tsmConnection_dpss.c (vtable_dpss): Add empty entry for
reprioritizeRequest
* tsmConnection_local.c (vtable_local): Add entry for
tsmReprioRequest_local
* tsmConnection_web.c (vtable_web): Add entry for
tsmReprioRequest_web
* tsmIntProts.h (tsmAddRequest_actual): Add proto
(tsmRemoveRequest_actual): Add proto.
(tsmReprioritizeRequest_actual): Add proto.
(tsmReadNextTile_web): Delete decl.
(tsmWriteTile_local): Delete decl.
* tsmRequestSrv.c (tsmReqElemReprioritize): New. Adjust the
priority of a request.
(tsmReqServerRescind): Reprioritize a tile if we've removed the
highest priority request but not the tile itself.
(tsmReqServerSubmit): Reprioritize when priority increases.
* tsmTile_local.c (tsmReprioRequest_local): New. Reprioritize a
tile in this connection's queue.
* tsmTile_web.c (tsmReprioRequest_web): New. Reprioritize a tile
in this connection's queue.
(tsmReadNextTile_web): Delete.
Fri Nov 17 14:22:19 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c (tsmInitTspecParams): make the default level number
for creating DEMs be 0 not 5.
2000-11-13 Michael A. Eriksen <eriksen@ai.sri.com>
* tsm.h: Added void tsmTileReqInfo( TsmConnection connect,
PRIntervalTime *begin, PRIntervalTime *end, int *num_now, int
*num_never, int *num_later );
* tsmReadRowsTIFF.h: moved #include "tsmReadRowsTIFF.h" to be the
first include in order to get config.h loaded
2000-11-01 Michael A. Eriksen <eriksen@ai.sri.com>
* Logging.c: Renamed __WIN32__ to WIN32 and _MSVC to MSVC
* Removed winbuild/config.h
2000-11-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmExtProts.h (tsmRequestDestroy): Expose
* tsmRequestSrv.c (tsmReqServerNextReady): Handle end >= n.
2000-11-07 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmRequest.h: Move exposed decls to...
* tsmExtProts.h: ...here.
* tsmConnection.c (tsmConnect): Don't initialize removed fields.
(tsmConnectRequestList): New. Create and return a new tile
request list.
* tsmConnectionInt.h (struct TsmConnectionCommon): Remove obsolete
fields (req_begin, req_end, numb_now, numb_never, numb_later).
* tsmTile.c (tsmTileReqAdd): Remove references to old
implementation.
(tsmTileReqInfo): Turn into useless stub. No longer works.
2000-11-06 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_RAW.c (tsmDownSample_inmemory_levels): Disable >10000m
checking.
* tsmWriteRows.c (tsmWriteRows_write): Ditto.
Fri Nov 3 16:02:47 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_local.c (tiffCacheHandle): when reading the max number
of open file descriptors, a previous TIffHandle was popped off the
stack to use for the new descriptor, however it was stored in a
local variable with the same name as a more global variable. This
outer variable was used after the inner scope was deleted and so
the new TiffHandle pointer was lost, causing core dump time.
2000-11-03 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in: Use large file compilation environment under
Solaris.
* configure: Regen
* tsmConnection.c (tsmConnect): Check for read failure when
mode != TSM_WRITE_ONLY
* tsmConnection_local.c (tsmConnect_local): Initialize read
infrastructure when mode != TSM_WRITE_ONLY
* tsmCreate.c (tsmCreateAllTiles): Properly add TSM_DOWNSAMPLE_DEM
flag to tsmDownSample_inmemory calls.
* tsmCreate_RAW.c (downsample_image_u32): Alternate
implementation with checking (disabled).
(tsmDownSample_byblocks): Check for bad DEM values read in.
* tsmTile.c (tsmWriteTile): Clean the tracing a bit.
* tsmWriteRows.c (tsmWriteRows_write): Check for bad DEM values on
write.
Thu Nov 02 15:29:26 2000 <reddy@MAGNOLIA>
* tsmConnection.c (tsmConnect): don't do all that tsmFreePurl()
stuff - it's freeing memory that is owned by the connection!
* tsmConnection_local.c (tsmConnect_local): the new multi-pipe
reading architecture made a few assumptions that connection was
read only. As a result, write connections always failed.
* tsmGeoVRML.c: new function - sets an MFColor field with a single
value
(TsmGeoVRML_writeTileModel): create a Background node
(TsmGeoVRML_writeHTMLFile): fix up the index.html file
(TsmGeoVRML_writeTileImage): fix so that we can now handle 1-byte
(greyscale) images - previously assumed all images were RGB.
* tsmUtils.c (tsmShowUrl): use "explorer" as the default web
browser to use for hyperlinks on a PC for the time being. (Can be
overridden.)
* tsmConnectionParams.c (tsmInitParams): don't generate normals by
defaults - still some small bug to track down here
Wed Nov 01 17:14:19 2000 <reddy@MAGNOLIA>
* tsmGeoVRML.c: guard against NULLs and also free the TsmGeoVRML
structure itself.
2000-10-26 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnect): Handle failures to creat actual
connections more gracefully.
* tsmConnect_local.h (struct TsmConnectionLocalAux): New.
Common to all actuals. Hangs off of parent connection.
* tsmConnection_local.c (tsmConnect_local): If a TIFF dataset,
create locks and TIFF handle space for each level.
(tsmDisconnectCommon_local): New. Clean up locks and TIFF handle
space for each level. Close open TIFF handles using
tiffCacheClose.
* tsmTile_local.c: Include <prinit.h>
(struct TIFFHandle): New. Cache for TIFF handles.
(all_handles): New. List of currently open TIFF handles.
(tiffInit, tiffInitFunc): New. PRCallOnceType pair to initialize
all_handles.
(tiffCacheHandle): New. Cache a newly created TIFF handle,
trashing a previous one if we've overrun our limit.
(tiffCacheClose): New. Close and forget about a TIFF handle.
(tsmReadTIFF_local): Lock accesses to a particular TIFF file.
Cache open handles using tiffCacheHandle.
2000-10-16 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnect): Attempt to read tspec prior to
making actual connections.
* tsmConnectionInt.h (tsmConnect_web): Add idx argument.
(tsmConnect_dpss): Ditto.
(tsmConnect_local): Ditto.
* tsmConnection_dpss.c (tsmConnect_dpss): Add idx argument.
* tsmConnection_local.c (tsmConnect_local): Add idx argument.
Remove tspec initialization (now done in tsmConnect).
Make readable thread name.
* tsmConnection_web.c (tsmConnect_web): Add idx argument.
Remove tspec initialization (now done in tsmConnect).
Make readable thread name.
* tsmRequest.c (tsmRequestClaim): Increase trace level.
* tsmRequestSrv.c (tsmReqServerClaimList): Increase trace level.
* tsmTile_local.c (tsmReaderThread_local): Improve tracing of
error and shutdown conditions.
* tsmTile_web.c (tsmReaderThread_web): Improve tracing of error
and shutdown conditions.
Thu Oct 12 13:11:13 2000 <reddy@MAGNOLIA>
* tsmImage.c (tsmReadImage): use "rb" for tsmOpenStream, not "r"
* tsmWriteRowsPPM.c: always use "wb" not "w"
* tsmUrlToFile.c: always use "rb" not just "r" - Windows will not
read a binary file correctly if you just specify "r"
* tsmReadRowsRAW.c (tsmReadRowsRAW_new): always use "rb" not "r"
* tsmReadRowsJPEG.c: always use "rb", not just "r" with fopen
* tsmReadRowsDOQ.c: always use "rb", not just "r"
* tsmReadRowsDEM.c: always use "rb" and "wb" with fopen!
* tsmImage.c (tsmSaveImageJFIF): always use "rb" with fopen, not
"r"!
* tsmReadRowsPBM.c: always use "rb" with fopen when then file is
binary as Windows gets picky about this.
Mon Oct 9 14:28:38 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_local.c (tsmReaderThread_local): make robust in face of
req being returned NULL.
* tsmConnection_local.c (tsmConnect_local): make sure that we
create a connect->name string, even if we don't have a tspec file
to get the name from.
* tsmRequestSrv.c (tsmReqServerThread): guard against NULL tspec
pointer - this can happen when connection is write-only, i.e. the
tspec hasn't been created yet.
2000-10-02 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile.c (tsmReadTile): Call tsmAllocReadTile() instead of vice
versa.
(tsmAllocReadTile): The basic implementation that does no data
copying (maybe a speed boost).
2000-09-29 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmRequest.h (struct tsmSimpleRequestList): Don't limit to 32768
items in request list.
2000-09-29 Lee Iverson <leei@Mission.AI.SRI.COM>
* tsmGeoVRML.c (TsmGeoVRML_new): Remove strange cruft.
* tsmTile_local.c (tsmCheckTileFormat_local): Use PR_GetFileInfo64
so that we don't crap out on large TIFF files.
(tsmCheckTIFFFormat_local): Ditto.
2000-09-29 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile_local.c (tsmCheckTileFormat_local): Improve tracing.
2000-09-28 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_RAW.c (tsmDownSample_inmemory_levels): Remove warining
on h1_span.
* tsmTile.c (receiveTile, tsmReadTile): Improve tracing.
* tsmTile_local.c (tsmReaderThread_local): Change direction of
heap_is_empty test. Ooops. Copy rest of error handling
etc. from tsmReaderThread_web.
* tsmTile_web.c (tsmReaderThread_web): Use heap_is_empty test.
2000-09-27 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmRequestSrv.c (struct tsmRequestServer_): Add destroying flag
so we can avoid recursive locks.
(tsmReqServerCreate): Initialize destroying to FALSE.
(tsmReqServerDestroy): Set destroying TRUE once we are locked.
(tsmReqServerForgetList): Only lock if !destroying.
(tsmReqServerRescind): Ditto.
* tsmTile.c (receiveTile): Status is TRUE if tileBuffer is non-zero.
* tsmRequestSrv.c (tsmReqElemCreate): Zero errCount.
(tsmReqServerDequeueTile): Return failure if NULL buffer queued.
* tsmRequestSrv.h (struct tsmReqElem_): Add errCount field.
* tsmTile_web.c (tsmReaderThread_web): Rerequeue tiles after
errors, counting number of failures. If a tile request fails
three times, then complete the request by queueing a NULL
tileBuffer.
(readNextTile): Improve failure tracing.
* tsmUrlToFile.c (tsmReadHttpFile): Reset the connection after an
error response from ghttp.
Tue Sep 26 10:43:09 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmReadRowsTIFF.c (tsmParseCreateParams_TIFF): swap lat/long
info from GeoTIFF file - got it the wrong way round.
Tue Sep 26 13:52:24 2000 <leei@MAGNOLIA>
* configure.in: libxml inclusion references ../libxml
* configure: Regen.
* tsmRequestSrv.c (tsmReqServerForgetElem): If not found in
eqhash_delete, don't destroy.
Tue Sep 26 10:43:09 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* logging.c (sys_err_str): removed references to sys_nerr and
sys_errlist as these do not appear to be defined under Solaris
2.7.
2000-09-25 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmArg.c (tsmParseReadArgs): Add -read_multi arg for setting the
TSM_PARAM_READ_MULTI value.
* tsmConnection.c (tsmConnect): Default read_multi to 4, and read
from params if set.
* tsmConnectionParams.c (tsmSetParam): Parse TSM_PARAM_READ_MULTI
and TSM_PARAM_WRITE_MULTI.
* tsmConnectionParams.h (TSM_PARAM_READ_MULTI): Define.
(TSM_PARAM_WRITE_MULTI): Define.
* tsmConnectionParamsInt.h (struct TsmConnectionParamsStruct): Add
read_multi and write_multi value slots.
2000-09-20 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmDatabase.c (tsmPersistDatabase): Update for libxml 2.x
2000-09-14 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (EXTRA_HEADERS): Add tsmConnect_web.h,
tsmConnect_local.h and tsmConnect_dpss.h
* Makefile.in: Regen
* tsmConnection.c (tsmConnect): Start request server and create
initial (compatibility) request list.
(tsmDisconnect): Clean up request server and request lists.
(tsmAddRequest_actual): New. Generic function to add a request to
the actual connection.
(tsmRemoveRequest_actual): New. Generic function to remove a
request from the actual connection.
2000-09-14 Lee Iverson <leei@Canada.AI.SRI.COM>
*: First step in implementing multiple connections per server.
* Makefile.am (EXTRA_HEADERS): Add tsmRequestSrv.h
* Makefile.in: Regen
* tsmConnectionInt.h (ActualConnection): New typedef.
(TsmConnectionCommon): Move ConnectionCommonFields into here.
(tsmActualConnect_dpss): Declare.
(tsmActualConnect_http): Declare.
(tsmActualConnect_local): Declare.
(ActualConnectionVTable): New typedef.
(struct ActualConnection_): Declare base class.
(struct TsmConnectionDpss): First field is now
struct ActualConnection_. Move jpegBuffer here.
(struct TsmConnectionLocal): Ditto.
(struct TsmConnectionHttp): Ditto.
* tsmConnection.c (tsmConnect): Allocate allocate one
ActualConnection and establish it.
Don't allocate jpegBuffer
(tsmDisconnect): Call tsmDisconnect_actual.
Don't free jpegBuffer.
(tsmBeginLogging): Defer to tsmBeginLogging_actual
(tsmEndLogging): Defer to tsmEndLogging_actual
(tsmDisconnect_actual): New.
(tsmReadNextTile_actual): New.
(tsmWriteTile_actual): New.
(tsmCheckTileFormat_actual): New.
(tsmCheckTIFFFormat_actual): New.
(tsmBeginLogging_actual): New.
(tsmEndLogging_actual): New.
* tsmConnection_dpss.c (vtable_dpss): Instantiate
ActualConnectionVTable for DPSS.
(*_dpss): Adapt for new structure.
* tsmTile_dpss.c: Adapt for new structure.
* tsmTspec_dpss.c: Ditto.
* tsmConnection_local.c (vtable_local): Instantiate
ActualConnectionVTable for local files.
(*_local): Adapt for new structure.
* tsmTile_local.c: Adapt for new structure.
* tsmConnection_web.c (vtable_web): Instantiate
ActualConnectionVTable for HTTP.
(*_web): Adapt for new structure.
* tsmTile_web.c: Adapt for new structure.
* tsmUrlToFile.c (tsmOpenHttpConnection): Grab type from
TsmConnection
(tsmReadHttpFile, tsmUrlToMemory, tsmUrlToBuffer, tsmUrlToFile,
tsmUrlToTempFile, tsmUrlMimeType, tsmUrlExists): Take
TsmConnectionHttp argument directly.
2000-09-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (libtsmApi_a_SOURCES): Add tsmRequest.c and
tsmRequestSrv.c.
(EXTRA_HEADERS): Add tsmRequest.h and tsmRequestSrv.h
* Makefile.in: Regen
* tsmRequest.[ch]: New files. Request list management.
* tsmRequestSrv.[ch]: New files. TsmConnection-specific request
list manager.
2000-08-29 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (DO_RPCGEN): Define automake conditional only when
we have rpcgen on an SGI Irix.
* Makefile.am: Turn off rpcgen derivations if !DO_RPCGEN
* configure, Makefile.in: Regen
Mon Aug 28 11:16:30 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_local.c (tsmWriteTIFF_local): when writing TIFF files,
then set the PHOTOMETRIC tag correctly for greyscale images -
previously we were setting this to be RGB. This caused the JPEG
library to fail when writing JPEG compressed greyscale (1
component) tilesets.
* tsmLAS_IO.c: [file deleted]
* tsmLAS_IO.h: [file deleted]
* tsmCreate_RAW.c (tsmReadRow_RAW): [removed]
(tsmCreateLevelTiles_generic): [removed]
(tsmDownSample_generic): [removed]
(tsmDownSample_generic_ps): [removed]
(tsmDownSample_generic_gaus): [removed]
(tsmCreateLevelTiles_RAW): [removed]
(tsmDownSample_RAW): [removed]
* tsmCreate_LRBT.c (tsmCreateLevelTiles_LRBT): [removed]
(tsmDownSample_LRBT): [removed]
* tsmCreate_TIFF.c: [file deleted]
* tsmCreate.c (tsmCreateLevelTiles): [removed]
(tsmMakeTempImageName): [removed]
(tsmRemoveTempImages): [removed]
(tsmDownSample): [removed]
* mtables.c: [file deleted]
* sih.h: [file deleted]
* sihDecs.h: [file deleted]
* sihHash.c: [file deleted]
* sihProts.h: [file deleted]
* All .[ch] files: added Apache Software License notice
* AUTHORS: added Yong Tze Chi
* LICENSE: change the tsmApi license to the Apache Software
License, version 1.1
Sat Aug 26 18:24:26 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmReadRowsDEM.c (tsmParseCreateParams_DEM): don't constrain
USGS DEM based data to be output as 16-bit pyramids. This should
be user customizable.
* tsmReadRowsTIFF.c (tsmParseCreateParams_TIFF): allow grayscale
TIFF images as well as RGB and colour palette
Thu Aug 24 10:21:59 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmReadRowsTIFF.c: [new file] TIFF/GeoTIFF file reader
* tsmReadRowsTIFF.h: [new file] TIFF/GeoTIFF file reader
* tsmCreate.c: Added instructions in the header comment for the
file on how to write your own file format reader functions for
tsmApi
(tsmGetFileType): remove function - tsmFindImportFormat does all
of this already.
(tsmInitTspecParams): the default coordinate system when
generating a dataset should be TSM_NONE_COORDSYS, not UTM.
Tue Aug 22 11:37:31 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGeoVRML.c (TsmGeoVRML_new): guard against NULL ferror field
don't create an error.txt file when generating GeoVRML content
(TsmGeoVRML_usage): correct the help text and correctly describe
the purpose of the make_geovrml utility (this really shouldn't be
in the tsmApi library but in tsmUtils/make_geovrml).
(TsmGeoVRML_writeHTMLFile): correct the path output to the
index.html <embed> tag for the root tree file
* tsmCreate_RAW.c (tsmDownSample_inmemory_levels): deal with the
case where the target pyramid has only one level (i.e. the entire
image is contained within a single tile - can happen for small
DEMs).
Fri Aug 18 17:53:04 2000 Yong Tze Chi <chi@Lomond.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): Modified so that this
function sets the numBytesPerComponent in tspec correctly.
* tsmReadRowsDEM.c: (tsmReadRowsDEM_read): Fixed bug in reading
DEM data from temporary RAW file.
Fri Aug 18 11:48:07 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmCreate.c (tsmInitTileParams): Modified to initialize
out_bytespercomp properly.
* tsmCreate.h: Added the field 'out_bytespercomp' in TsmTileParams
struct to suuport byte format conversion.
* tsmWriteRows.h: Added the the field 'outBytesPerComp' in
TsmWriteRows struct for byte format conversion.
* tsmWriteRows.c: (tsmWriteRows_convertTileFormat): New function
to convert input tile byte format into output byte format desired,
e.g. 16-bit to 32-bit conversion.
Thu Aug 17 20:55:59 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmWriteRows.c (tsmWriteRows_writeTile): This function now calls
tsmUpdateTileStats to update the min/max value of the dataset.
* tsmCreate.c: Modified to support reading of USGS DOQ format.
* tsmReadRowsDOQ.c: Added support for reading USGS DOQ format.
* tsmReadRowsDOQ.h: Added support for reading USGS DOQ format.
Wed Aug 16 11:32:37 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmCreate.c: Added support for LRBT images.
* tsmReadRowsPBM.c: Changed functions only used in this module to
static.
* tsmReadRowsGIF.c: Changed functions only used in this module to
static.
* tsmReadRowsJPEG.c: Changed functions only used in this module to
static.
* tsmReadRowsDTED.c: Modified tsmParseCreateParams_DTED to
initialize tile's geographic coordinate.
* tsmReadRowsDEM.c: Added progress report while resampling
elevation data. Also modified tsmParseCreateParams_DEM to
initialize tile's geographic coordinate.
* tsmWriteRows.c: Added progress report while writing data.
* tsmReadRowsDTED.c: Added tsmReadRowsDTED.c to support reading of
DTED files for TerraVision dataset creation.
* tsmReadRowsDTED.h: Added tsmReadRowsDTED.h to support reading of
DTED files for TerraVision dataset creation.
* tsmCreate.h: Modified to add support for DTED reader.
* tsmCreate.c: Modified to add support for DTED reader.
Tue Aug 15 13:37:29 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmFootprintToLatLong): [new func] convert a
footprint in any coordinate system into a lat/long footprint.
(tsmIsFootprintInside): support comparisons against different
coordinate systems by first converting both footprints into
lat/long and then performing the comparison.
(tsmBuildGeosets): compare resolutions in a common unit system
(convert degrees into meters)
(tsmAddDataSetToDatabase): change message reporting different min
or max resolution between a newly read dataset and a dataset that
exists in the database. This is now a debug message, not an error
report.
Fri Aug 04 10:07:15 2000 <reddy@MAGNOLIA>
* tsmGeoVRML.c: add <float.h> include for DBL_MAX definition under
Windows
* tsmReadRowsGIF.h: need to undefine DrawText if it exists because
winuser.h under Windows defines this and thus causes a conflict
with the DrawText function in libungif.
* tsmGeoVRML.c: replace Unix-specific code with calls to
tsmMakeDirIfNotExist that works under Windows too.
Thu Aug 10 15:08:54 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmCreate.c: Modified to support reading USGS DEM file.
* tsmReadRowsDEM.c: Added support for reading USGS DEM file.
* tsmReadRowsDEM.h: Added support for reading USGS DEM file.
* tsmWriteRows.c: Minor bug fix: inadequate memory allocation for
temporary buffer.
Tue Aug 8 10:19:48 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmCreate.c: Modified to support RAW data format.
* tsmReadRowsRAW.h: Added tsmReadRowsRAW.h.
* tsmReadRowsRAW.c: Added tsmReadRowsRAW.c - support for reading
RAW data format.
* tsmWriteRowsPPM.c: Added comments.
* tsmWriteRows.c: Bug fix for handling non-LRBT image with
overlapping region, and added comments.
Mon Aug 7 18:20:59 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmWriteRows.h: Modified to handle non-LRBT image formats
correctly.
* tsmWriteRows.c: Modified to handle non-LRBT image formats such
as JPEG, GIF, and PBM correctly.
2000-08-07 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_RAW.c (tsmDownSample_image, tsmDownSample_inmemory_r,
tsmDownSample_inmemory_levels, tsmDownSample_inmemory):
Change print() traces to TSMTRACE.
Mon Aug 7 10:57:13 2000 Yong Tze Chi <chi@Silver.AI.SRI.COM>
* tsmWriteRowsPPM.h: Added tsmWriteRowsPPM.h
* tsmWriteRowsPPM.c: Added tsmWriteRowsPPM.c. Write TerraVision
tiles out to PPM files. Used for debugging purposes.
* tsmReadRowsPBM.h: Added tsmReadRowsPBM.h.
* tsmReadRowsJPEG.h: Added tsmReadRowsJPEG.h.
* tsmReadRowsGIF.h: Added tsmReadRowsGIF.h.
* tsmWriteRows.h: Added tsmWriteRows.h.
* tsmReadRowsPBM.c: Added tsmReadRowsPBM.c. Read rows of data from
PPM and PGM image.
* tsmReadRowsJPEG.c: Added tsmReadRowsJPEG.c. Read rows of data
from JPEG image.
* tsmReadRowsGIF.c: Added tsmReadRowsGIF.c. Read rows of data
from GIF image.
* tsmWriteRows.c: Added tsmWriteRows.c. Contain functions to
write out TerraVision tiles. To be used with
tsmDownSample_inmemory.
2000-08-04 Lee Iverson <leei@Canada.AI.SRI.COM>
(tsmDownSample_byblocks): Redo initialization of top and bottom
borders to avoid memory overruns.
2000-08-04 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmIntProts.h (TSM_DOWNSAMPLE_SIGNED): Changed from UNSIGNED,
since most integer datasets (e.g. OI) will be unsigned.
* tsmCreate_RAW.c (tsmDownSample_image): Adapt for change to
SIGNED flag.
(tsmDownSample_inmemory_r, tsmDownSample_inmemory_levels):
Properly set flags for TOP and BOTTOM borders.
2000-08-03 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_RAW.c (tsmDownSample_byblocks): Properly initialize
in_dex array.
(tsmDownSample_inmemory_r): Fix recursion to properly distribute
data.
Tue Aug 1 14:25:04 2000 Yong Tze Chi <chi@Lomond.AI.SRI.COM>
* tsmGeoCoordBuffer.h: Renamed from tsmGeoCoord.h to avoid name
clash.
* tsmGeoCoordBuffer.c: Renamed from tsmGeoCoord.c to avoid name
clash.
* tsmGeoVRML.c: Renamed from TsmGeoCoord to GeoCoordBuffer to
avoid name clash.
2000-08-01 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_RAW.c (struct LevelBuf): Add span_h field (necessary?)
(tsmDownSample_inmemory_levels): Simplify and correct iin
preparation for rolling updates when overlap needed.
(tsmDownSample_inmemory): Initialize span_h.
* tsmGeoVRML.c (TsmGeoVRML_writeHTMLFile): Correct format string
to print percent signs.
Fri Jul 21 11:31:14 2000 Yong Tze Chi <chi@Lomond.AI.SRI.COM>
* tsmConnectionInt.h (ConnectionCommonFields): add new fields to
connection params structure for GeoVRML support
* tsmConnectionParams.c (tsmInitParams): initialise new GeoVRML
variables
(tsmSetParam): support new GeoVRML variables: TSM_PARAM_MODELS and
TSM_PARAM_TEXTURES
* tsmArg.c (tsmParseVRMLArgs): removed obsolete VRML creation options
(tsmDescribeArgs): ditto
Thu Jun 29 10:47:17 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): updated the tspec generation
routine to support the creation of LVCS datasets.
* tsmCreate.c (tsmInitTspecParams): initialise lvcs_x and lvcs_y
to 0.0.
* tsmCreate.h: add lvcs_x and lvcs_y parameters to specify the
LVCS offset from the lat/long origin
* tsmCreate.c (tsmCreateTspec): allow LVCS coordinate systems when
creating tspec files
2000-07-12 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection_web.c (tsmConnect_web): Default connection caching
to TRUE.
2000-06-29 Lee Iverson <leei@Canada.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): tm_month needs to be offset
by 1, since tm_month==0 => January.
Wed Jun 28 15:24:46 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): don't ignore the user's
-comps setting when defining the default components per pixel for
an OI. Previously this was getting hardcoded to 3.
2000-06-28 Lee Iverson <leei@Canada.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): Downsample by (w+1)/2
* tsmCreate.c (tsmCreateAllTiles): Downsample by (w+1)/2
* tsmCreate_RAW.c (tsmDownSample_generic_ps): Downsample to
(w+1)/2 instead of w/2. Handle edge conditions.
(tsmDownSample_generic_gaus): Downsample to (w+1)/2 instead of
w/2. Use a 4x4 kernel for gaussian downsampling to avoid image
creep.
2000-06-26 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmUrlToFile.c (tsmOpenHttpConnection): Call
tsmCloseHttpConnection if failed to connect, instead of rolling
our own disconnect.
(tsmCloseHttpConnection): Don't assume that
http_trans_conn_destroy() won't access host and proxy_host.
Sat Jun 17 19:26:06 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmSet): don't do the va_arg inside of the
min() MACRO because it gets expanded twice and we lose the
argument value. This meant that you could never set the jpeg
quality for writing datasets.
Sat Jun 3 22:40:51 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmOpenStream): make the "http writes not
supported" message a debug message rather than an error
report. Let's the calling function fail silently if it wants to.
Fri Jun 09 17:49:30 2000 <reddy@MAGNOLIA>
* tsmConnection.c (tsmConnect): only create the tileBasePurl and
tspecBasePurl structures if they are NULL. This was causing a mem
leak before because we were creating a new Purl without looking to
see if one already existed.
* tsmPurl.c (tsmMakePurl): remove the constant string initialisers
to the new Purl - make them NULL instead. This ties up a number of
potential mem free errors.
Mon Jun 05 15:06:31 2000 <reddy@MAGNOLIA>
* tsm.h: add #include for stdlib.h because Visual Studio's
stdlib.h defines min() and max() without checking for their
existence. We check, so let's bring in the MS stuff first.
* tsmPurl.c (tsmMakePurl): initialise the uri string also
(tsmCopyPurl): do a tsmMemStrdup on the protocolString field of a
Purl when we copy it. This used to be a pointer copy and that
worries me.
(tsmFreePurl): free the protocolString too now
(tsmParseUrl): do a tsmMemStrdup() when setting the protocolString
* tsmEmulate.c (tsmOpen): add protocolString to list of Purl
fields initialised
* tsmUrlToFile.c (tsmOpenStream): free the Purl that was allocated
when bombing out upon an error
* tsmConnection.c (tsmConnect): the Purl we create here is now
local in its scope and we can free it when we're done. Fixes a
potential duplicate mem free when tspec not parsed.
* tsmConnection_dpss.c (tsmConnect_dpss): take a copy of the
Purl for the dataset location, don't just grab the pointer.
* tsmConnection_web.c (tsmConnect_web): take a copy of the
Purl for the dataset location, don't just grab the pointer.
* tsmConnection_local.c (tsmConnect_local): take a copy of the
Purl for the dataset location, don't just grab the pointer.
2000-06-09 Michael A. Eriksen <eriksen@AI.SRI.COM>
* added #define HAVE_ERRNO_H to config.h in winbuild
2000-06-09 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (AC_CHECK_HEADERS): Add errno.h
* configure, config.h.in: Regenerate.
* logging.c: Include <errno.h> if HAVE_ERRNO_H, otherwise use
hopeful definitions.
2000-06-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmAllocTspecs.c (tsmFreeTspec): Add tracing.
* tsmConnection.c (tsmDisconnect): Add tracing.
* tsmUrlToFile.c (tsmOpenHttpConnection): Destroy connection on
http connection failure.
2000-06-05 Lee Iverson <leei@Canada.AI.SRI.COM>
* TsTileSpecIn.c (tspReadIdentityTspec1): Remove redundant strcpy().
* TsTileSpecIntProts.h (tspReadSimpleTileSet): Declare.
* configure.in (AC_CHECK_HEADERS): Add unistd.h
* configure, config.h.in: Regen
* tsmHost.c: Don't include <ctype.h>
* tsmImage.c: Include <unistd.h> if HAVE_UNISTD_H defined.
* tsmInternal.h: Include <ctype.h>
* tsmUtils.c: Include <unistd.h> if HAVE_UNISTD_H defined.
(tsmShowUrl): We can only call unlink() if HAVE_UNISTD_H
Thu May 18 15:31:59 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmPrintMap): save the geo-name field for map
entries in the dataset database
(tsmPrintModel): save the geo-name field for model entries also
* tsmDatabase_local.c (tsmParseDatabaseLine): read the geo-name
field for model and map entries in the dataset database
Wed May 10 17:10:13 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmReadHttpFile): only check for connection
close if a TsmConnection structure has been passed in, otherwise
we stand the risk of dereferencing a NULL pointer.
2000-04-24 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnectionInt.h (struct TsmConnectionHttp): Add cache_conns
flag and use bitfields.
* tsmConnectionParams.h (TSM_PARAM_CACHE_CONNS): New flag.
* tsmConnectionParamsInt.h (struct TsmConnectionParamsStruct): Add
cache_conns flag associated with TSM_PARAM_CACHE_CONNS
* tsmConnection_web.c (tsmConnect_web): Use TSM_PARAM_CACHE_CONNS
and param->cache_conns to initialize cache_conns
* tsmUrlToFile.c (tsmOpenHttpConnection): Optionally cache
connection based on value of connect->cache_conns.
2000-04-24 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmUrlToFile.c (tsmOpenHttpConnection): Use ASYNC mode.
Expand buffer to 16K. Call http_trans_buf_reset() to clean up
between requests.
(tsmCloseHTTPConnection): Correct Doc++ comment.
(tsmReadHttpFile): Check for a "Connection: close" reponse from
server and close connection if seen.
* TsTileSpecOut.c (tspSaveTspec): Comment out unused funcName.
* tsmArg.c (tsmParseVRMLArgs): Comment out unused funcName.
* tsmChecksum.c (tsmUpdateTileStats, tsmChecksumPyramid_col):
Comment out unused funcName.
* tsmConnection.c (tsmDisconnect): Comment out unused funcName.
* tsmConnectionParams.c (tsmPrintParams): Comment out unused
funcName.
* tsmCreate_LAS.c (tsmCreateLevelTiles_LASRGB): Remove unused vars.
* tsmCreate_RAW.c (tsmReadRow_RAW): Comment out unused funcName.
* tsmEmulate_local.c (tsmIsTIFFPresent_local): Comment out unused
funcName.
* tsmEmulate_web.c (tsmIsTIFFPresent_web): Comment out unused
funcName.
* tsmImageUtils.c (tsmRgbBufferToGifFile): Comment out unused
funcName.
* tsmMem.c (tsmMemManagerFree): Comment out unused funcName.
* tsmPyramidInfo.c (tsmPrintServerGroup, tsmPrintPyramidInfo):
Comment out unused funcName.
* tsmTspecUtils.c (fprint_Purl, fprint_IdentityTspec,
fprint_TileTspec, fprint_CoordTspec, fprint_PixelTspec,
fprint_ImageTransformationTspec, fprint_ProjectionTspec,
fprint_SimpleTileSet, fprint_Pyramid, fprint_NameUrlPairs,
check_TileTspec_for_strings, check_CoordTspec_for_strings,
check_PixelTspec_for_strings,
check_ImageTransformationTspec_for_strings,
check_ProjectionTspec_for_strings): Comment out unused funcName.
* tsmTspec_web.c (tsmReadTspec_web): Comment out unused funcName.
* tsmUTM.c (projection_limit_check): Remove unused var
* tsmUtils.c (tsmCheckString): Comment out unused funcName.
* tsmVRML.c (tsmWriteGeotile): Make funcName static.
* tsmVRMLUtils.c (tsmVRMLCacheAdd): Remove unused vars.
(tsmTileElev): Comment out unused funcName.
Sun Apr 23 14:55:09 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c (tsmInitTileParams): set the default DEM tile size
to be 128 x 128.
* tsmCreate_RAW.c (tsmCreateLevelTiles_generic): calculate the
tile size based upon the pyramid's pixel dimensions not those of
the input data
* TsTileSpecGen.c (tspCreatePyramid): set tspec pixel info to a
default value (e.g. 1 comp of 4 bytes) and don't use the values
from the params structures as these as for the input data not the
output pyramid.
* tsmChecksum.c (tsmCalcTileStats): added code to calculate the
min/max tile values for 2-byte input data.
2000-04-13 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmUrlToFile.c (tsmOpenHttpConnection): Use HTTP_TRANS_SYNC
mode. Identify connection in TSMTRACE.
(tsmCloseHttpConnection): Identify connection in TSMTRACE.
(tsmCloseStream): Pass funcName to TSMTRACE
Thu Apr 6 16:48:45 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmOpenHttpConnection): disabled the http
connection caching for the time being - it doesn't work on avila
for some reason - need to investigate this further!!
* tsmTile_web.c (tsmReadNextTile_web): create a URL that will use
the Apache mod on the server (if installed), otherwise stick with
the old cgi-bin style URL.
* tsmConnection_web.c (tsmConnect_web): remove the code that
checks for the existence of tile formats over the web - this is
done by the apache mod/cgi script.
(tsmConnect_web): check whether the http server has the
mod_terravision Apache mod installed
2000-04-06 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile_local.c: Include <prerror.h>
(tsmReadNextTile_local): Check for PR_PENDING_INTERRUPT_ERROR on
failure and return TSM_NODATA.
* tsmTile_web.c: Include <prerror.h>
(tsmReadNextTile_web): Check for PR_PENDING_INTERRUPT_ERROR on
failure and return TSM_NODATA.
2000-04-06 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmGet, tsmDescribeConnection): Move
DPSS-specific variables inside #ifdef region.
(tsmConnectionType): Remove unused vars.
* tsmCreate_PBM.c (tsmParseCreateParams_PPM,
tsmParseCreateParams_PGM): Remove unused vars.
* tsmDatabase.c (tsmAppendDataSet, tsmPersistDatabase,
tsmIsFootprintInside, tsmCalcFootprintFromXform,
tsmUpdateDatabaseFromServerCB, tsmRemoveMapFromDatabase,
tsmRemoveModelFromDatabase): Remove unused vars.
(tsmUpdateDatabaseFromServerCB): Move fast_dpss check inside DPSS
ifdefed region.
* tsmDatabase_local.c (tsmReadDatabase_local): Remove unused vars.
Delete #if 0 section.
* tsmPyramidInfo_local.c (tsmReadNameUrlIds): Remove unused vars.
* tsmTile.c (tsmTileReqEnd): Remove unused vars.
* tsmTile_local.c (tsmReadTIFF_local): Remove unused vars.
(tsmWriteTIFF_local): Ditto.
* tsmTspec_web.c (tsmReadTspecNEW_web): Remove unused tmpPathName
* tsmUrlToFile.c (tsmUrlToTempFile): Remove unused vars.
(tsmOpenStream): Add funcName to TSMTRACE().
* tsmUrlToFile.c (tsmFilenameFromHandle): Correct usage of
list_next() and list_delete()
Wed Apr 5 15:43:06 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): changed the behaviour of how
many levels to create. Previously we created levels until the
lowest res version fitted inside a 32x32 tile. This is no longer a
requirement, so now we go down until the lowest version fits
inside a single tile of the dimensions set for that dataset,
e.g. 128x128 for OIs by default.
* tsmCreate_RAW.c (tsmCreateLevelTiles_generic): minor fix for
dealing with arbitrary tile sizes
* tsmUrlToFile.c (tsmReadHttpFile): explicitly set the HTTP
version number of GETs/HEADs to 1.1
* TsTileSpecGen.c (tspCreatePyramid): no longer hardcoded to
128x128 for OIs and 32x32 for DEMs. Accepts a TsmTileParams
structure and sets up the tile dimensions from that.
Fri Mar 17 09:23:31 2000 <reddy@MAGNOLIA>
* tsmUrlToFile.c (tsmReadHttpFile): move range string to top of
function otherwise it is destroyed before we are finished with its
value
(tsmReadHttpFile): only read the body if we doing a GET
* tsmPurl.c (tsmFilenameToUrl): don't assume that getcwd() returns
a string starting with '/'. This is not the case under Windows.
Thu Mar 16 09:45:13 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c: updated all http routines to use the low-level
ghttp functions.
Wed Mar 15 16:15:31 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_web.c (tsmDisconnect_web): if we have an http
connection open, then close it.
* tsmConnection.c (tsmDisconnect): call the new HTTP disconnect
function when closing a connection
Mon Mar 06 00:40:31 2000 <reddy@MAGNOLIA>
* tsmTile_web.c (tsmReadNextTile_web): include the port number in
the http URL to the server's get_http_tile CGI entry point.
(tsmCheckTileFormat_web): include the port number in the test for
whether a file exists at the specified URL
(tsmCheckTIFFFormat_web): ditto
Thu Mar 2 17:15:48 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* configure.in (ac_cv_have_dash_pthread): removed libwww and ghttp
from the command line
Tue Feb 29 18:24:56 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmMakeDirIfNotExist): should check for
PR_GetFileInfo returning a value NOT equal to PR_SUCCESS in order
to create the directory structure (logic was inverted).
2000-02-11 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in: Remove check for ../thread/pthread.h
* configure, config.h.in: Regen
Thu Jan 27 10:59:06 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmInitHttp): initialise out http PRLock
(tsmCleanupHttp): destroy our http PRLock
(tsmSetHttpProxy): enclose the mechanics of this function inside a
PR_Lock...PR_Unlock block because libwww is not thread safe
(tsmUrlToMemory): ditto on the locking to maintain thread safe
(tsmUrlToBuffer): ditto on the locking to maintain thread safe
(tsmUrlMimeType): ditto on the locking to maintain thread safe
* tsmTile_web.c (tsmReadNextTile_web): use the new tsmUrlToBuffer
call to read an http tile into memory
(tsmCheckTileFormat_web): use the new tsmUrlExists call to check
the tile format of the remote dataset
(tsmCheckTIFFFormat_web): use the new tsmUrlExists call to check
for the specific TIFF image on an http server
* tsmUrlToFile.c (tsmUrlToFile): [new func] takes an http url and
downloads it to a file on local disk using the libwww routines.
(tsmUrlToBuffer): [new func] loads an http url to a preallocated
buffer, with the ability to specify a maximum number of bytes to
read.
(tsmUrlMimeType): [new func] performs a HEAD request on the URL
and returns its MIME type using libwww
(tsmUrlExists): [new func] checks to see if a valid file exists at
the end of a URL (not exist means MIME type = "www/unknown").
(tsmHttpUrlToFile): [deleted]
(tsmHttpUrlToBuffer): [deleted]
(tsmHttpUrlFd): [deleted]
(tsmHttpFdToStream): [deleted]
(tsmSkipHttpHeader): [deleted]
(tsmSkipHttpHeaderFd): [deleted]
(tsmSocketRequestFd): [deleted]
(tsmFileDescToFile): [deleted]
(tsmFileDescToBuffer): [deleted]
Wed Jan 26 17:17:59 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmInitHttp): [new func] initialises the libwww
library (if not already initialised)
(tsmCleanupHttp): [new func] closes down the libwww (if previously
inited)
(tsmSetHttpProxy): [new func] set and remove a proxy server for all
http accesses
(tsmUrlToMemory): [new func] uses libwww to download a file from
an http server into memory. Returns the buffer and its size.
* tsmUtils.c: change name of our HTTP define to USE_HTTP in order
to avoid conflict with a definition in libwww
* tsmConnection_web.c: ditto
* tsmEmulate_web.c: ditto
* tsmLocalDbase_web.c: ditto
* tsmPyramidInfo_web.c: ditto
* tsmTile_web.c: ditto
* tsmTspec_web.c: ditto
* configure.in: added libwww include files to the compile line for
tsmApi
Tue Jan 18 17:16:03 2000 <reddy@MAGNOLIA>
* tsmUrlToFile.c (tsmAddHandle): remembers a FILE stream and
filename pair.
(tsmFilenameFromHandle): returns a filename given a FILE stream,
as previously supplied to tsmAddHandle
(tsmHttpFdToStream): remember the name of the temp file that we
create when we pull the http file over to localdisk
(tsmCloseStream): delete the temp file associate with this handle
(if there is one)
Fri Jan 14 11:07:21 2000 <reddy@MAGNOLIA>
* tsmPurl.c (tsmParseUrl): update to support Windows style full
paths, e.g. C:/foo. This involves correctly realizing that C:/ is
not a full URL with an unknown protocol (http://), that this is
the root directory and doesn't need a '/' prefixed, as well as
converting '\' style slashes to '/'.
Thu Jan 06 15:21:07 2000 Martin Reddy <reddy@MAGNOLIA>
* tsmUrlToFile.c (tsmSocketRequestFd): don't do an htons on the
port. This caused http streams to not work on the PC. Also, the
3rd param of PR_Connect is a timeout not a byte size.
Tue Jan 4 09:44:26 2000 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* make_html.pl: [new file] This Perl script will automatically
generate the API documentation from the source code in the tsm
directory using the doc++ utility. This script fixes some
problems with doc++ and prettifies the HTML output a bit.
1999-12-22 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmDatabase.c (rawTimeString): New. Produce a raw hex time
string for 64 bit PRTime.
(tsmAppendServer): Use rawTimeString() to print PRTime.
(tsmPrintServer): Ditto.
* tsmDatabase_local.c (tsmParseDatabaseLine): Handle both 32 bit
and 64 bit raw PRTime values.
Mon Dec 20 16:10:02 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmPrintDataSet): write out the geo-name field to
the database file for each dataset!!
Fri Dec 17 11:04:22 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmPurl.c (tsmFilenameToUrl): remove declare for getcwd()
Wed Dec 15 09:44:56 1999 <reddy@MAGNOLIA>
* logging.c (NetLogOpen): Use PR_AF_INET.
* rpc_types.h.in: Either include <sys/types.h> or use PRUint*
to define u_int and u_short.
* tsmGenArray.h: Include <rpc/types.h> for u_int.
* tsmImage.c (DrawText): Undefine to protect from Windows
DrawText->DrawTextA translation.
* tsmPurl.c (tsmFilenameToUrl): Don't need to declare getcwd().
* tsmTileInt.h (struct TsmTileHeader): Make tv an array of PRTime.
* tsmUrlToFile.c (tsmStreamToFile): Don't close input stream.
(tsmFileDescToFile): Correct docs.
(tsmStreamToBuffer): Don't close input stream.
(tsmFileDescToBuffer): Correct docs.
* tsmVRMUtils.c (M_PI): Define if not imported from <math.h>
1999-12-14 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection_web.c (tsmConnect_web): Don't call
tsmInitHttpLock().
* tsmExtProts.h (tsmInitHttpLock): Delete decl.
(tsmHttpFdToStream): Take PRFileDesc* arg.
(tsmHttpUrlFd): Return PRFileDesc* and take skipHeader arg.
(tsmSkipHttpHeaderFd): New decl.
(tsmSocketRequestFd): Return PRFileDesc*.
(tsmSocketRequestStream): Delete.
* tsmTile_web.c (tsmReadNextTile_web): Adapt for PRFileDesc*
returns from tsmHttpUrlFd().
(tsmCheckTileFormat_web): Don't use tsmOpenStream() since we don;t
want to read whole files. Simply call tsmHttpUrlFd() and then
PR_Close() if successful.
(tsmCheckTIFFFormat_web): Ditto.
* tsmUrlToFile.c: Include <prio.h> and <prnetdb.h>
(gethost_lock): Delete.
(tsmHttpUrlToFile): Adapt for tsmHttpUrlFd() returning PRFileDesc*
(tsmOpenStream): Adapt tsmHTTP access for tsmHttpUrlFd() returning
PRFileDesc*
(tsmHttpUrlToBuffer): Adapt for tsmHttpUrlFd() returning
PRFileDesc*
(tsmHttpUrlFd): Since tsmSocketRequestFd() now returns
PRFileDesc*, so must we. Also add skipHeader arg.
(tsmHttpFdToStream): Take PRFileDesc* as fd arg. Copy contents to
a temporary file, then fopen() and return stream.
(tsmInitHttpLock): Delete.
(PRfgets): New. Read a single line from PRFileDesc*.
(tsmSkipHttpHeaderFd): New. Read HTTP header until start of
data. Returns error condition if 404/403 error or header is
improperly formatted.
(tsmSocketRequestFd): Now returns PRFileDesc* and doesn't take
verbose argument. NSPR-ized for socket initialization.
(tsmSocketRequestStream): Deleted.
(tsmFileDescToFile): New. Copy from PRFileDesc* to file.
(tsmFileDescToBuffer): New. Copy from PRFileDesc* to memory buffer.
1999-12-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (DPSS_C): Conditionally define files to only include
when DPSS defined.
(libtsmApi_DPSS_a_SOURCES, libtsmApi_ISS_a_SOURCES): Add $(DPSS_C)
* Makefile.in: Regen
* aclocal.m4: Regen
* configure.in (AC_CHECK_HEADERS): Add <sys/types.h>
(AM_CONDITIONAL(DPSS)): Add.
* configure: Regen.
* config.h.in: Regen
* tsmPurlDefns.x: Unconditionally include <rpc/rpc.h>
* tsmPurlDefns.h: Regen
Tue Dec 7 12:08:42 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmRemoveServerSetsFromDatabase): fix bug that
caused TV to crash when updating a database that we built before
we added geoname fields to datasets.
(tsmBuildGeosets): robustified the GeoSet building process against
datasets with no geoname fields. Plugs another potential TV crash
during database update.
1999-12-06 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (libtsmApi_a_SOURCES): Remove TsTileSpecDecs_xdr.c,
tsmPurlDefns_xdr.c and tsmPackTspecs.c ...
(libtsmApi_DPSS_a_SOURCES, libtsmApi_ISS_a_SOURCES): ... and add
them here, so they are only compiled if DPSS enabled.
* Makefile.in: Regen
* TsTileSpecOut.c (tspSaveTileTspec_fp): Make extern instead of
static.
* tsmImageUtils.c (tsmTileToRgb): Call tspSaveTileTspec_fp()
directly.
* tsmPackTspecs.c: Move tsmCheckString() to ...
* tsmUtils.c (tsmCheckString): ... here.
* configure.in: Check for <rpc/types.h> header and generate
minimal file if not seen.
(AC_CHECK_HEADERS): Add syslog.h and pwd.h
* configure: Regen
* config.h.in: Regen
* logging.c: Conditionalize <syslog.h> on HAVE_SYSLOG_H
(NetLoggerOpen): Disable NL_SYSLOG if !HAVE_SYSLOG_H
(NetLoggerGTWriteString, NetLoggerWriteString, NetLoggerClose):
Ditto.
(SysLogOpen, SysLogClose): Don't define if !HAVE_SYSLOG_H
* tsmPurl.c: Conditionalize <pwd.h> on HAVE_PWD_H
(tsmFilenameToUrl): Only interpret ~foo if HAVE_PWD_H
(tsmParseUrl): Ditto.
* TsTileSpecDecs.x tsmPurlDefns.x: Conditionalize <rpc/rpc.h>
include on DPSS, otherwise provide dummy typedefs for XDR and
bool_t.
* TsTileSpecDecs.h tsmPurlDefns.h: Regen.
1999-12-05 Lee Iverson <leei@canoe.ai.sri.com>
* tsmPurl.c: Make sure we count the extra : when port is defined.
Tue Nov 30 15:17:40 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmPrintServer): need to add a line feed at the
end of a server's last-contacted date
Tue Nov 23 16:52:16 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate_LAS.c (tsmCreateLevelTiles_LASRGB): compiling with
-o32 didn't like comparison with PRFileDesc* < 0. Changed to != 0.
1999-11-13 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmDatabase.c (tsmUpdateDatabaseFromServerCB): Conditionalize
DPSS access on defined(DPSS)
(tsmReadServer): Ditto.
Tue Nov 9 10:09:48 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase_local.c (tsmParseDatabaseLine): parse the
lvcs-footprint field in the old database format
Mon Nov 8 16:24:34 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmAppendServer): [new func] adds a server to the
XML tree
(tsmAppendGeoSet): [new func] adds a geoset to the XML tree
(tsmAppendMap): [new func] adds a map to the XML tree
(tsmAppendDataSet): [new func] adds a dataset to the XML tree
(tsmAppendFootprint): [new func] adds a footprint to the XML tree
* tsmUtils.c (tsmDateString): don't put \n at the end of a date
string.
Fri Nov 5 00:24:54 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase_local.c (tsmParseDatabaseLine): support reading of
resolutions in degrees as well as meters
* tsmDatabase.c (tsmPrintFootprint): add support for writing out
an LVCS coordinate to the database file
(tsmCalcFootprintFromXform): When we encounter a pyramid with an
affine projection type, interpret this as an LVCS. Previously we
tried to convert this to GCC using the various matrices in the
tspec, but these are not always supplied or correct.
(tsmPrintDataSet): when outputing the resolution for a latlong
dataset, the units are degrees not meters
(tsmIsFootprintInside): [new func] works out if one geographic
footprint is inside another.
(tsmCalcFootprintFromXform): support latlong pyramids - calculate
the latlong-footprint values
* TsTileSpecDecs.x: add TSM_LVCS_COORDSYS to the list of possible
coordinate systems in a Footprint.
LVCSFootprint: added a new structure for holding the origin and
extent of an LVCS dataset
Add LVCSFootprint to the list of possible representations for a
geographic Footprint
* tsmDatabase.c (tsmFreeMap): free the geoname field of a TsmMap
(tsmFreeModel): free the geoname field of a TsmModel
(tsmPrintMap): output the geoname of a TsmMap
(tsmAddMapToDatabase): copy the geoname field of a TsmMap
(tsmAddModelToDatabase): copy the geoname field of a TsmModel
(tsmReadMap): add a new field to the map.info file called
map-geoname which we read in order to find the map's geoname
(tsmReadModel): parse the geoname field in the VRML model's
Metadata node.
* tsmDatabase.h: added a geoname field to TsmModel and TsmMap
* tsmDatabase.c (tsmAddModelsToGeoSets): [removed]
(tsmAddPyramidGeoSet): [removed]
(tsmExtractFilename): [removed]
(tsmAddGeoSetToDatabase): [removed]
(tsmPairDanglingDatasets): [removed]
(tsmIsDatasetInAGeoset): [removed]
(tsmRemoveRedundantGeoSets): [removed]
(tsmAddMapsToGeoSets): [removed]
(tsmBuildGeosets): [new func] takes the current list of datasets,
maps, and models and builds a refresh list of GeoSets based upon
this.
(tsmCompareGeoNames): [new func] compares the geoname fields
of two datasets (pyramid, map, or model).
(tsmRemoveMapFromDatabase): no need to remove from geoset array
anymore
(tsmRemoveModelFromDatabase): ditto
Thu Nov 4 09:26:01 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.h: add a geoname field to the dataset
structure. This is a copy of the tspec geoname field.
* tsmDatabase.c (tsmPrintDataSet): write out the geoname
(tsmFreeDataSetContents): free the geoname
* tsmDatabase_local.c (tsmParseDatabaseLine): parse a geo-name
field associated with a dataset in the database.
* tsmDatabase.c (tsmUpdateDatabaseFromServerCB): use the new
tsmReadServer function to find all datasets on a server, rather
than using the old PyramidUrls loading functions from the
TsmHandle routines.
* tsmDatabase_dpss.c (tsmCompareDPSSDates): moved this function to
the _dpss.c file instead of having to #ifdef it out of the main
tsmDatabase.c file. Also provide a stub for when the DPSS define
is not given.
Wed Nov 3 18:44:06 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmCompareDPSSDates): change the time_t to a
PRTime and build the appropriate string from this value to compare
against a DPSS date string.
(tsmUpdateDatabaseFromServerCB): save current timestamp using
PR_Now() instead of time(NULL) so that the value works with the
new tsmDataString() function.
* tsmDatabase.h: change last_contacted from a time_t to a PRTime
variable so that it can be used with the updated tsmDateString().
* tsmDatabase_web.c: [new file]
* tsmDatabase_dpss.c: [new file]
* tsmDatabase_web.c (tsmReadServer_web): does a GET on an HTML
directory and parses through the result looking for any <A HREF>
tags that contain urls with a .oi, .dem., .map, or .model extension.
* tsmDatabase_local.c (tsmReadServer_local): scans a directory on
local disk and returns a list of all entries with a .oi, .dem,
.map, or .model extension.
* tsmDatabase_dpss.c (tsmReadServer_dpss): uses the old TsmHandle
routines to get a NameUrlIds list of datasets on a DPSS server
that is consistent with the other tsmReadServer_x calls.
* tsmDatabase.c (tsmReadServer): main function that reads a
TerraVision dataset server and returns a list of all datasets
(entries with a .oi, .dem, .map, or .model extension).
* tsmUtils.c (tsmCheckFilenameExtension): checks to see if a
filename has the specified filename extension, e.g. ".oi".
1999-10-06 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_LAS.c (tsmCreateLevelTiles_LASRGB): Use
PR_Open/PR_Close for ifp.
(tsmDownSample_LAS_psample, tsmDownSample_LAS_gaussian): Use
FILE * for in_ptr.
* tsmLAS_IO.c (tsmLAS_Finish, tsmLAS_GetLine, tsmLAS_GetDemLine,
tsmLAS_InitInImg): Use FILE * instead of bare fd for in_ptr.
* tsmLAS_IO.h (tsmLAS_Finish, tsmLAS_GetLine, tsmLAS_GetDemLine,
tsmLAS_InitInImg): Redeclare with FILE * for in_ptr.
* tsmInternal.h: Include <prio.h>
* TsTileSpecParse.c (tspReadPyramid): Convert stat() to
PR_GetFileInfo()
* tsmConnection_local.c (tsmConnect_local): Replace stat() with
PR_GetFileInfo().
* tsmImage.c (tsmSaveImageGIF, tsmReadImage): Remove unsued vars.
* tsmLocalDbase.c (tsmLoadPyramidDatabaseIfExist): Convert stat()
to PR_GetFileInfo()
* tsmPurl.c (tsmParseUrl): Convert stat() to PR_GetFileInfo()
* tsmPyramidInfo_local.c (tsmReadNameUrlIds): Remove unused var.
* tsmTile_local.c (tsmCheckTileFormat_local,
tsmCheckTIFFFormat_local): Convert stat() to PR_GetFileInfo()
* tsmTspec_local.c (tsmDoesTspecExist_local, tsmReadTspec_local):
Convert stat() to PR_GetFileInfo()
* tsmUtils.c (tsmDateString): Remove unused vars.
(tsmMakeDirIfNotExist): Convert stat() to PR_GetFileInfo() and
mkdir() to PR_MkDir().
* tsmVRML.c (tsmCreateVtileProto, tsmSetNodeMFNode,
tsmAppendNodeMFString): Remove unused vars
(tsmWriteGeotile): Convert stat() to PR_GetFileInfo()
1999-10-05 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (AC_CHECK_HEADERS): Remove checks for
system-specific headers.
(AC_CHECK_FUNCS): Remove checks for functions handled by NSPR.
* configure: Regen
* config.h.in: Regen.
* tsmInternal.h: Remove all system-specific includes.
* checksum.c (checksum): Use NSPR bit-sized int types.
* logging.h: Include <prio.h>
(struct _loginfo): Declare log_socket as PRFileDesc *
(NetLogOpen): Returns PRFileDesc *
(NetLogClose): Takes PRFileDesc * as arg.
* logging.c: Remove system-specific includes, replacing with NSPR.
(NetLoggerOpen): Redo with NSPR primitives.
(NetLoggerGTWriteString): Use %lu for printing unsigned long. Use
PR_htonl() and PR_Write().
(NetLoggerWriteString): Use PR_htonl() and PR_Write().
(NetLogOpen): Use NSPR I/O primitives and return PRFileDesc *
(NetLogClose): Take PRFileDesc * arg
(writen): Delete. Replaced with calls to PR_Write().
* tsmCreate_RAW.c (downsample_image_*, downsample_point_*,
downsample_gauss_*): Rename using NSPR bit-sized int types.
(tsmDownSample_image): Properly call renamed downsample_* funcs.
(tsmDownSample_inmemory_r, tsmDownSample_inmemory_levels,
tsmDownSample_inmemory): Remove unused vars.
* tsmHost.c: Remove system-specific includes, replacing with NSPR.
(getrealhost): Use NSPR for obtaining host info.
(getfulllocalhostname): Use NSPR for obtaining system and host
info.
* TsTileSpecOut.c (tspSaveCoordTspec): Remove %lg in fprintf()
* tsmIntProts.h (tsmRemoveMapFromDatabase): Declare.
(tsmRemoveModelFromDatabase): Declare.
* tsmImage.c (gif_read): Make in_buffer an unsigned char *.
* tsmTspec_dpss.c (tsmReadEmbeddedTspec_dpss): Use %ld for long
arg to sprintf().
* tsmUtils.c (tsmElapsedTime): Reindent.
* tsmVRML.c (tsmCreateTreeGraph): Remove %lg in sprintf()
1999-10-01 Lee Iverson <leei@Canada.AI.SRI.COM>
Merge from main branch.
* tsmIntProts.h (tsmDownSample_inmemory): Declare.
* tsmCreate_RAW.c (tsmDownSample_byblocks): New. Internal
function to downsample a large rectangular buffer in
cache-blocked chunks.
(tsmDownSample_inmemory_r): New. Internal function to recursively
downsample a whole pyramid. (not yet implementing the proper
edge effects for gaussian downsampling).
(tsmDownSample_inmemory_levels): New. Internal function for
downsampling an entire pyramid, reading in the level 0 data and
calling tsmDownSample_inmemory_r() to recursively write and
downsample all levels below.
(tsmDownSample_inmemory): New. Downsample an entire pyramid in
memory. Takes a description of the process (image size and
format) and callbacks for reading from level 0 and writing to
all the levels.
Tue Sep 28 18:39:36 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmLocalDbase_web.c (tsmLoadPyramidDatabase_web): now we can
just use the "localdisk" version as this also supports http urls.
* tsmLocalDbase_local.c (tsmLoadPyramidDatabase_local1): update
comments and variables to reflect that we can now read from an
http url as well as a local disk file.
* tsmPyramidInfo_local.c (tsmReadNameUrlIds): use tsmOpenStream to
open PyramidUrls file which means that we can read http URLs
too. Also, make sure we close the file when we are done.
* tsmTspec_web.c (tsmReadTspecNEW_web): update function to read
tspec file directly from a stream. Previously we saved the tspec
file to /tmp and then read from local disk, but Windows machines
don't generally have a /tmp directory.
* TsTileSpecParse.c (tspReadTspecStream): [new func] new interface
to reading a tspec file where you pass in an already opened file
stream.
(tspReadTspec): updated to use the new tspReadTspecStream func
once the named file has been opened.
1999-09-27 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmIntProts.h (TSM_DOWNSAMPLE_*): Define flags for controlling
behaviour of tsmDownSample_image() and tsmDownSample_block().
(tsmDownSample_image): Declare.
(tsmDownSample_block): Declare.
* tsmCreate_RAW.c (tsmDownSample_image): New. Downsamples a
2D-indexable image using point-sampling or gaussian
convolution.
(tsmDownSample_block): New. Downsamples a 2D image as a memory block.
Fri Sep 24 14:25:10 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionInt.h: removed prev_tile_no field and replaced it
with a tiles_written field - we don't care about the order any
more, but we still need to keep track of how many tiles have been
written to a TIFF file so that we can close it when all tiles have
been output.
* tsmTile_local.c (tsmWriteTIFF_local): removed code to enforce an
ordering of tiles for writing to a TIFF. Can now write out tiles
in any order. On the first tile write the TIFF file is opened,
after tiles_x * tiles_y tiles have been written out the TIFF file
is closed.
Thu Sep 23 21:55:34 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c (tsmCreateAllTiles): if we get a TIFF image, then
convert it to a raw bitmap and then treat it like a .raw file.
* tsmCreate_TIFF.c (tsmCreateRAWFromTIFF): [new func] converts a
24-bit or 8-bit TIFF/GeoTIFF file to a raw RGB bitmap file.
1999-09-23 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmCreate_RAW.c (tsmDownSample_generic_ps): Select whether
downsampling should be grid or inter-grid aligned based on
whether connection is to a DEM or an image.
(tsmDownSample_generic_gaus): Why was this kernel asymmetric?
Mon Sep 20 13:53:41 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate_TIFF.c (tsmParseCreateParams_TIFF): parse a TIFF or
GeoTIFF file for all its parameters. Extracts TIFF image
dimensions, and if the file is also GeoTIFF then extracts the
lower-left UTM/Latlong coord, resolution, and description.
Tue Sep 14 16:11:48 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* configure.in (LIBS): include the geotiff library in the compile
line.
* tsmCreate.c (tsmFindImportFormat): support the use of ".tif" or
".tiff" filename extensions for indicating TIFF files.
(tsmParseCreateParams): support querying the TIFF/GeoTIFF file to
find the image width/height etc and (optionally) the georeference
information.
* tsmCreate.h: added a TSM_IMPORT_TIFF enumerated type to code for
TIFF and GeoTIFF format images.
1999-09-08 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am: Remove CLASSIC_NSPR definition.
* Makefile.in: Regen
* configure: Regen based on change to ../acinclude.m4
1999-09-03 Lee Iverson <leei@Canada.AI.SRI.COM>
* acconfig.h (PTHR_TRACE): Delete.
* config.h.in: Regen
* configure.in (AC_CHECK_HEADER(pthr/trace.h)): Delete.
* configure: Regen.
* tsmTrace.c (tsmError, tsmStatus): Remove non-pthr definitions.
* tsmTrace.h.in: Remove conditionalization on pthr/trace.h (we'll
disable the definition of TRACING if <pthr/trace.h> not found.
1999-08-27 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure: Regen based on change to TV_NSPR in ../acinclude.m4
1999-08-20 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (CPPFLAGS): Search .. before $srcdir/..
* configure: Regen
* logging.c (NetLoggerGTWriteString): Change // comment to /*
(NetLoggerWriteString): Ditto.
* tsmUtils.c (tsmDateString): Change // comment to /*
1999-08-19 Lee Iverson <leei@Canada.AI.SRI.COM>
* Merge in changes from main branch.
* configure.in (SRI_INT32_T): Remove since now using NSPR sized
ints.
* configure: Regen.
1999-08-18 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmChecksum.c: Replace PRIntervalNow() with PR_IntervalNow().
* tsmConnection.c (tsmDisconnect): Selectively destroy locks and
conds only if they've been initialized.
1999-07-30 Rick Brownrigg <brownrig@erg.sri.com>
* tsmCreate_RAW.c (tsmCreateLevelTiles_generic): replacing all system
int16_t/int32_t types with NSPR equivalents.
1999-07-27 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnectionType): New. Return the type of
connection.
* tsmExtProtos.h (tsmConnectionType): Declare.
* tsmConnectionParams.c (tsmCopyParams): Make sure that vrml_dir
and vrml_url fields don't get overwritten and freed.
1999-07-25 Rick Brownrigg <brownrig@erg.sri.com>
* tsmInternal.h: include <prinrval.h>, <prtime.h>
* tsmConnectionInt.h: change type of timing variables req_begin and
req_end to NSPR types.
* tsmExtProts.h: change signatures of tsmElapsedTime() tsmDateString()
* tsm.h: include <prinrval.h>, <prtime.h>
* tsmTile.c: use NSPR interval timing functions.
* tsmChecksum.c: Ditto.
* tsmUtils.c: tsmElapsedTime() now uses NSPR types. Rewrote
tsmDateString() substantially.
* logging.c: uses NSPR date/time facilities.
* TsTileSpecGen.c: Ditto.
Fri Jul 23 18:18:05 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.h (TSM_PARAM_*): correctly define these as
64-bit constants by using ((int64_t)1)<<n.
* tsmConnectionParams.c (tsmCopyParams): previously we were only
copying one tsmConnectionParams *pointer* worth of data into the
new structure - i.e. 4 bytes!!! Now we copy the full byte-length
of the structure.
1999-07-23 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmDatabase.c (tsmIsDatasetInDatabase): Constify database.
(tsmIsDatasetInAGeoset): Constify database. Prtoect against a
NULL oi_name or dem_name.
* tsmConnection_dpss.c (tsmConnect_dpss): Call
tsmDisconnect_dpss() instead of tsmDisconnect() on failure.
tsmConnect() is responsible for cleaning itself up, and
tsmDisconnect_dpss() is responisible for cleaning up what we
allocate/initialize here.
* tsmConnection.c (tsmConnect): Call tsmFreePurl() if
tsmConnect_foo() fails.
1999-07-22 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnectionParamsInt.h (tsmSetParamFlag): Cast to void, since
there is no meaningful return value.
* tsmDatabase.c (tsmPrintFootprint): Replace all %lg format args
with %g (since %lg is non-standard and float/double arguments in
printf() get promoted to double anyway).
(tsmPrintMap): Ditto.
(tsmRemoveServerSetsFromDatabase): Remove unused var.
(tsmAddPyramidGeoSet): Ditto.
(tsmReadMap): Ditto.
(tsmReadModel): Ditto.
(tsmUpdateDatabaseFromServerCB): Ditto.
Thu Jul 22 14:07:50 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmRemoveServerSetsFromDatabase): don't remove
redundant geosets from the database after removing old sets. This
gets done one time after the server update.
(tsmIsDatasetInAGeoset): [new func] checks for a named dataset in
any geosets
(tsmPairDanglingDatasets): [new func] tries to pair up any OIs and
DEMs that are not already in geosets
Fri Jul 16 11:56:54 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmGetGeoSetFromURL): [new func] check if a
dataset URL exists in the database, and if so then return the
name of the geoset that links to that dataset.
* tsmAllocTspecs.c (tsmFillSimpleTileSets): move the section that
computes the wrap_lat/lon variables to *after* we have computed
the valid pixel sizes.
Wed Jul 14 15:30:43 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.h (TV_TILES_AVAIL_RATIO): added a
TV_TILES_AVAIL_RATIO event in order to log the ratio of tiles
required for a frame to the tiles available at that time.
* tsmConnection.c (tsmLog): add a DATASET=<name> event to all
NetLogger events that TerraVision outputs. This may be useful to
discriminate sources when logging to a host.
Mon Jul 12 14:25:00 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmRemoveMapFromDatabase): once we have removed a
map entry from the database, go through all of the geoset entries
and remove any references to that map also.
(tsmRemoveModelFromDatabase): same for removing a model entry
(tsmRemoveServerSetsFromDatabase): in addition to dataset entries,
remove all map and model entries that are defined for the
specified server.
Thu Jul 8 09:49:16 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_web.c (tsmConnect_web): call tsmInitHttpLock when
opening an http connection to make sure that the tile reads are
thread safe.
* tsmUrlToFile.c (tsmInitHttpLock): creates a global pthread mutex
lock that is used to make calls to tsmOpenStreams thread-safe for
accessing http datasets.
* tsmDatabase.c (tsmUpdateDatabaseFromServerCB): added a
TsmConnectionParams structure to the command line. This is used to
pass in the TSM_PARAM_FULL_DPSS_READ setting. Also updated the
code from the old tsmGetPyramid call to the tsmConnect call and
use the TsmConnectionParams structure here too.
* tsmConnectionParams.c (tsmSetParam): support the new
TSM_PARAM_FULL_DPSS_READ parameter
(tsmPrintParams): support the TSM_PARAM_FULL_DPSS_READ param
* tsmConnectionParams.h (TSM_PARAM_FULL_DPSS_READ): new connection
parameter. This is used to select between a quick or a full DPSS
server update.
Wed Jul 7 14:42:35 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmCompareDPSSDates): [new func] compares the
DPSS loaded date string with the time_t for the last time we
contacted the server.
(tsmAddDataSetToDatabase): updated the logic of testing for a
duplicate instance in the database - test setids when looking at a
DPSS instance.
(tsmIsDatasetInDatabase): [new func] tests for the existence of a
DPSS dataset instance in the database
Tue Jul 6 13:47:21 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmRemoveServerSetsFromDatabase): added a new
parameter to this function, keep_list. This is a NameUrlIds list
that contains a list of all datasets that should not be removed
from the database.
(tsmUpdateDatabaseFromServerCB): instead of removing all entries
for a server at the start and then adding all of the new ones, we
build a list of all the entries that we found and then remove all
entries from the database for this server that do not appear in
the list.
* TsTileSpecDecs.x: removed definitions for the GeoPyramidTspec
and GeoPyramid structures
* TsTileSpecUrls.c (tspReadGeoPyramidUrls): removed
* TsTileSpecIn.c (tspReadGeoPyramid): removed
(tspReadGeoPyramidTspec): removed
* tsmLocalDbase.h: GeoPyramids structure removed
* tsmPackTspecs.c (geoPyramidPack): removed
(geoPyramidUnpack): removed
(geoPyramidOffset): removed
(geoPyramidUnoffset): removed
* tsmTspecUtils.c (fprint_GeoPyramidTspec): removed
(fprint_GeoPyramid): removed
(check_GeoPyramidTspec_for_strings): removed
(check_GeoPyramid_for_strings): removed
* tsmPyramidInfo.h: GeoPyramidInfo and GeoPyramidInfos structures
removed
* tsmPyramidInfo.c (tsmPrintGeoPyramidInfo): removed
(tsmGetGeoPyramidInfo): removed
(noDemOrOI): removed
(tsmGetAllGeoPyramidInfos): removed
* tsmUtils.c (tsmGeoPyramidNameToUrl): removed
(tsmGeoPyramidNameToId): removed
* tsmAllocTspecs.c (tsmMakeGeoPyramid): removed
(tsmFreeGeoPyramid): removed
* tsmEmulate.c (tsmGetGeoPyramid): not emulated anymore
(tsmPutGeoPyramid): not emulated anymore
* tsmEmulate_dpss.c (tsmGetGeoPyramid_dsm): removed
(tsmLoadGeoPyramidToDPSS): removed
* tsmEmulate_local.c (tsmGetGeoPyramid_local): removed
(tsmGetGeoPyramid_local1): removed
(tsmPutGeoPyramid_local): removed
(tsmPutGeoPyramid_local1): removed
* tsmEmulate_web.c (tsmGetGeoPyramid_web): removed
* tsmLocalDbase.c (tsmLoadGeoPyramidDatabase): removed
(tsmReLoadGeoPyramidDatabase): removed
(tsmLoadGeoPyramidDatabaseIfExist): removed
(tsmSaveGeoPyramidDatabase): removed
* tsmLocalDbase_dpss.c (tsmLoadGeoPyramidDatabase_dsm): removed
* tsmLocalDbase_web.c (tsmLoadGeoPyramidDatabase_web): removed
* tsmLocalDbase.c (tsmAddToGeoPyramidDatabase): [removed]
* logging.c (NetLoggerGTWriteString): incorporate Amit's bug fix
for the netlogger API under Linux. There was a comparison between
an htonl() int and a machine specific int in the LBL code.
(NetLoggerWriteString): ditto
Thu Jul 1 20:38:02 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmDescribeConnection): only output tspec URL
for DPSS if it is defined.
* tsmCreate.c (tsmCreateLevelTiles): support greyscale LAS images
when creating a new OI tileset.
* tsmCreate_LAS.c (tsmCreateLevelTiles_LASGREY): [new func]
creates a tileset from a greyscale (1 component) LAS format image.
1999-06-21 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (CLASSIC_NSPR): Conditionally define in order to
bypass native threads.
* Makefile.in: Regen.
* configure: Regen.
* tsm.h: Include <prtypes.h>
* tsmConnection_dpss.c(tsmConnect_dpss): Call
issSetAllRcvStreamsTimeout(50000) so that a blocked DPSS
connection will check for interrupt every 50ms.
* tsmExtProts.h (tsmPause, tsmPause_ms, tsmPause_us): Declare.
* tsmTile.c (tsmReadTile): Return status from tsmReadNextTile().
(tsmGrabValidReadList): Exit condition loop on PR_CondWaitVar()
error return. Capture return value before exiting locked
region.
(tsmAllocReadNextTile): Process unsuccessful return for any return
value from tsmReadNextTile() other than TRUE.
* tsmTile_dpss.c: Include <prerror.h>
(tsmRequestThread_dpss): Use tsmPause(). Check for
PR_PENDING_INTERRUPT_ERROR and exit thread.
(tsmReconnectThread_dpss): Use tsmPause(). Check for
PR_PENDING_INTERRUPT_ERROR and exit thread.
(tsmReconnect_dpss): Loop, checking for ISS_LIB_TIMEOUT and
PR_PENDING_INTERRUPT_ERROR. Reset error and exit with
TSM_NODATA on interrupt.
* tsmUtils.c (tsmPause): New. Pause for a given number of seconds
(with millisecond resolution).
(tsmPause_ms): New. Pause for a given number of milliseconds.
(tsmPause_us): New. Pause for a given number of microseconds.
1999-06-15 Lee Iverson <leei@Canada.AI.SRI.COM>
* acconfig.h: Add NO_NSPR_10_SUPPORT
* config.h.in: Regen.
* configure: Regen.
* tsmConnection_dpss.c (tsmDisconnect_dpss): Remove second arg to
PR_JoinThread().
* tsmTile_dpss.c (tsmRequestThread_dpss): Return void.
(tsmSendRequestListToDPSS): Add missing open brace.
(tsmReconnectThread_dpss): Return void.
Wed Jun 9 10:35:10 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_dpss.c (tsmConnect_dpss): moved the code that sets
the blocking variable into the protocol specific routine because
we need to set this *before* we try to load a tspec file (as this
could be on the DPSS for a DPSS set). Also, change the default
reads to be blocking, not non-blocking.
* tsmConnection_local.c (tsmConnect_local): ditto
* tsmConnection_web.c (tsmConnect_web): ditto
* tsmConnection.c (tsmConnect): removed the code for setting the
read blocking variable. This is now done in the protocol specific
connection routines.
Wed Jun 2 00:08:43 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.h (TV_REQUEST_SENT): add a new TerraVision
NetLogger event: TV_REQUEST_SENT.
* tsmTile_dpss.c (tsmSendRequestListToDPSS): output a
TV_REQUEST_SENT NetLogger event every time we send a request list
to the DPSS, with a record of the number of tiles sent.
* tsmTile.c (tsmTileReqEnd): output a TV_REQUEST_SENT NetLogger
event every time we call tsmTileReqEnd for local/http connections
* tsmCreate_RAW.c (tsmCreateLevelTiles_generic): use int32_t and
int16_t to ensure we have 4-byte and 2-byte datatypes, also fixed
the check for sea_level values and correctly set them to 0m.
Tue Jun 1 15:01:20 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate_RAW.c (tsmCreateLevelTiles_generic): added an extra
parameter - sea_level. Any DEM values that match this value are
set to 0.0.
* tsmCreate.h: moved the sea_level field from the TsmTspecParams
structure to the TsmTileParams structure as it is now used in
order to create the tiles of a pyramid.
* tsmCreate_LAS.c (tsmCreateLevelTilesOld_LASELEV): removed -
obsolete function
(pad_right): removed - obsolete function
(pad_top): removed - obsolete function
(full_tile): removed - obsolete function
(get_ibuf): removed - obsolete function
* tsmVRMLUtils.c (tsmGetCoords): removed the bit that checks for
an elevation of sea_level and sets it to zero when outputing a
VRML pyramid. This is now done at TerraVision dataset creation
time.
* TsTileSpecParse.c (tspParseTspecLine): remove sea_level field
parsing
* TsTileSpecDecs.x: remove sea_level field from Pyramid
* TsTileSpecOut.c (tspSavePixelTspec_fp): removed sea_level output
* tsmTspec_web.c (tsmReadTspecNEW_web): remove the check that
tests if a file buffer returned from an http request is a valid
tspec file. This would fail if there was any line it didn't
recognise in the tspec, e.g. if a new field was added, and anyway
we don't need to do this check anymore because the tsmUrlToFile
routine will handle HTTP errors correctly.
Sun May 30 11:04:38 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecUrls.c (tspSaveGeoPyramidUrls): removed
* TsTileSpecOut.c (tspSaveOldPyramid): removed
(tspSaveSimpleTileSet): removed
(tspSaveIdentityTspec): removed
(tspSaveTileTspec): removed
(tspSaveProjectionTspec): removed
(tspSaveImageTransformationTspec): removed
(tspSaveCoordTspec): removed
(tspSaveSimpleTspec): removed
(tspSavePyramidTspec): removed
(tspSavePyramids): removed
(tspSaveGeoPyramid): removed
(tspSaveGeoPyramidTspec): removed
* tsmConnectionParams.c (tsmSetParam): remove the code to set the
TSM_PARAMS_CLIP value
* tsmArg.c (tsmParseVRMLArgs): removed the -zclip VRML parameter
that was used to get a TSM_PARAMS_CLIP value. This is now done
with the sea-level value in the DEM tspec file.
* tsmVRMLUtils.c (tsmGetCoords): use the sea_level field of the
DEM pyramid in order to work out the height value that represents
sea level. This replaces the previous way of using the
TSM_PARAMS_CLIP parameter.
* tsmCreate.c (tsmInitTspecParams): initialise the sea_level field
of TsmTspecParams to zero.
(tsmCreateTspec): set the tspec sea_level field from the value in
the TsmTspecParams structure when creating a new tspec file.
* tsmCreate.h: added a sea_level field to TsmTspecParams
Fri May 28 15:08:34 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* Makefile.am (EXTRA_LIBRARIES): removed all of the VRML
generation tools (vtile, image, tree) from the directory and
removed references to these in the Makefile. These 3 programs now
join the rest of the tsmUtils, which are under CVS control as a
separate repository: "cvs -d /homedir/reddy/CVS checkout tsmUtils"
* TsTileSpecOut.c (tspSaveTspec): do not write out the obsoleted
map fields to tspec files.
(tspSavePixelTspec_fp): output the sea-level field to the tspec
file (for DEM datasets only).
(tspSaveMapTspec_fp): deleted
* tsmTile_dpss.c (tsmRequestThread_dpss): we need to set the
cancel type to asynchronous while in the select call because this
function is not specified as a cancellation point by POSIX. This
caused tsmDisconnect to hang under Solaris waiting for the DPSS
request thread to cancel when it never would.
* TsTileSpecParse.c (tspParseTspecLine): support parsing the new
sea-value tspec field.
(tspParseTspecLine): remove the routines for parsing the map tspec
fields - these are obsoleted now that maps and models are
represented as datasets in the Pyramids directory and pulled in by
the Database reading routines.
* TsTileSpecDecs.x: add a new Pyramid field to store the DEM value
that represents sea level
Thu May 27 16:23:45 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_dpss.c: change #include <dsm/dsm.h> to <dpss/dsm.h> as
this is the new location for these include files in DPSS 2.5.2.
* tsmConnectionInt.h: ditto
* tsmConnection_dpss.c: ditto
* tsmEmulateInt.h: ditto
1999-05-28 Rick Brownrigg <brownrig@erg.sri.com>
* Modifications to the following files to replace Posix threads
* with NSPR threads:
* tsmInternal.h
* tsmConnectionInt.h
* tsmConnection.c
* tsmConnect_dpss.c
* tsmTile.c
* tsmTile_dpss.c
1999-05-24 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (TV_NSPR): Reference.
* configure: Regen.
* acconfig.h (PTHR_TRACE): Add #undef template.
* config.h.in: Regen.
* tsmTrace.c: Use PTHR_TRACE instead of HAVE_PTHR_TRACE_H
* image.c (IMAGE_VERSION): Renamed from VERSION.
(usage, main): Use IMAGE_VERSION.
* tree.c (TREE_VERSION): Renamed from VERSION.
(usage, main): Use TREE_VERSION.
* vtile.c (VTILE_VERSION): Renamed from VERSION.
(usage, main): Use VTILE_VERSION.
Thu May 20 11:02:06 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.h: include <sys/types.h> for the int64_t
definition, not config.h - tsmConnectionParams.h is an exported
header and so it cannot have any dependency upon an internal
header.
1999-05-20 Lee Iverson <leei@canoe.ai.sri.com>
* configure.in (AC_CANONICAL_SYSTEM): Add, so we can check for use
of -pthread and _REENTRANT define.
(AM_CONFIG_HEADER): Add tsmTrace.h
(AC_CHECK_HEADERS(pthr/trace.h)): Define PTHR_TRACE if yes.
(AC_OUPUT): Remove tsmTrace.h.
* acconfig.h (_REENTRANT): Add.
(_THREAD_SAFE): Add.
* tsmTrace.h.in: Add #undef PTHR_TRACE so we can use tsmTrace.h as
a config file, and avoid extraneous recompiles.
* tsmConnection.c (tsmBeginLogging): Compare log_socket with 0,
not NULL.
* tsmDatabase.c (tsmPrintDatabase): Pass 0 arg to tsmDateString(),
not NULL.
* tsmDatabase_local.c (tsmParseDatabaseLine): Compare int return
values with 0, not NULL.
* tsmEmulate_dpss.c (tsmLoadGeoPyramidToDPSS): Return 0, not NULL.
* tsmUtils.c (tsmDateString): Compare against 0, not NULL.
Thu May 13 16:40:23 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_dpss.c (tsmConnect_dpss): added a call to
dpssPrintServers to tell us which servers we are connected to.
Requires latest verson of DPSS libs (see ~reddy/magic/DPSS.2.5.2)
Wed Apr 14 11:18:51 1999 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmConnectionParams.c (tsmSetParam): added 'include_vtiles'
parameter, not yet implemented to put all the vtile data directly
in the tree file.
* tsmConnectionParams.h (TSM_PARAM_INCLUDE_VTILES): had to change
way flags are created using hex instead of << left shift since
left shift doesn't work over 31 bits
Tue Apr 6 15:31:45 1999 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmVRML.c (tsmCreateInline): refer to a tree instead of vtile in
LOD_TREE_TYPE
(tsmMakeTreeRedirectFilename): redirect to trees if using LOD tree
types
(tsmCreateAnchor): make an inline instead of an anchor if in an
LOD tree type
* configure.in (CPPFLAGS): moved TV_TSMCONFIG to add -ldpss
library before -lpthread library
Wed May 12 15:05:41 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmUpdateDatabaseFromServerCB): [new func] this
is essentially the old tsmUpdateDatabaseFromServer() function but
you can pass in a callback function (and closure) that gets
invoked every time we start to look at a new dataset. This lets us
give progress reports in the main application.
(tsmUpdateDatabaseFromServer): this is now just a wrapper to the
above function, with the callback params set to NULL.
1999-05-12 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile_dpss.c (tsmStartRequestThread_dpss): Add stub for case
when !DPSS.
Tue May 11 16:04:07 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecParse.c (tspReadTspec): add a sanity check to see if
any tspec tokens were actually read in from a tspec file. If we
opened the file and no tokens were found (e.g. not a tspec file or
an I/O error occurred), then we return a result of FALSE.
1999-05-07 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmDatabase.c (tsmAddDataSetToDatabase,
tsmUpdateDatabaseFromServer): Add funcName as second arg to
tracing commands.
* tsmMem.c (tsmMemManagerFree): Make arg type const so that it can
free const ptrs without warning.
* tsmExtProts.h (tsmMemManagerFree): Declare arg const.
* tsmConnectionInt.h (struct TsmConnectionDpss): Add
requestThreadRunning field which is TRUE iff the request thread
is active.
* tsmConnection_dpss.c (tsmConnect_dpss): Don't start request
thread here. Initialize requestThreadRunning to FALSE.
(tsmDisconnect_dpss): If requestThreadRunning then cancel/join
requestThread.
* tsmTile.c (tsmTileReqEnd): Call tsmStartRequestThread_dpss() for
DPSS case.
* tsmTile_dpss.c (tsmRequestThread_dpss): Change to static. Set
requestThreadRunning field. Start by sending current request
list, since thread isn't started until requests are registered.
(tsmStartRequestThread_dpss): New. Start the thread if not
already running.
* tsmIntProts.h (tsmStartRequestThread_dpss): Declare.
Wed May 5 09:57:47 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmSet): according to the default argument
promotions, float variables should be accessed as doubles with
va_arg, not as a float! I was doing va_arg( args, float ) to
access the TSM_REQUEST_TIMEOUT value.
Tue May 4 10:23:50 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile.c (tsmTileReqAdd): don't log tile requests here if the
connection is a DPSS set (otherwise log request as normal).
* tsmTile_dpss.c (tsmSendRequestListToDPSS): log tile requests
here for DPSS connections - i.e. when we actually request the
blocks
* tsmConnection_dpss.c (tsmEndLogging_dpss): only do
issStopRcvLogging if we were logging a read connection, and only
do issStopSendLogging if we were logging a write connection.
* tsmConnection.c (tsmSet): added code to support the changing of
the DPSS request thread timeout using the TSM_REQUEST_TIMEOUT
token.
(tsmGet): return the current setting of TSM_REQUEST_TIMEOUT (or
0.0 if dataset is not a DPSS set).
* tsmTile_dpss.c (tsmSendRequestListToDPSS): use the current read
list, not the request list (i.e. we want to use the last complete
request list, not one that is currently being built).
* tsmConnection_dpss.c (tsmConnect_dpss): if we have a read DPSS
connection, then fire off a new thread that calls
tsmRequestThread_dpss. This is the thread that actually performs
the DPSS tile requests at user-defined intervals
* tsmTile.c (tsmTileReqEnd): don't request DPSS tiles here anymore
Mon May 3 17:16:15 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.h: change the definition of TsmParamCode to
be a long long (64-bit) - otherwise when we set the 31st bit
(i.e. TSM_PARAM_REQUEST_CHECK) we get a negative number, which is
not good and caused us to not be able to access named DPSS sets.
* tsmTile_dpss.c (tsmRequestThread_dpss): [new func] this is the
requester thread that goes into an infinite loop of sleeping for a
bit, then requesting the current tile list from the DPSS.
* tsmTile.c (tsmTileReqBegin): put mutex locking around the bits
that modify the request list structures
(tsmTileReqAdd): ditto
Mon Apr 26 16:23:50 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_dpss.c (tsmReconnectThread_dpss): continually calls
issReReady until it returns ISS_OK, with a 5 second timeout
between attempts.
(tsmReconnect_dpss): spawns a new thread that calls the above
tsmReconnectThread_dpss function in order to try and reconnect to
DPSS server that has given us a SERVER_DIED message
(tsmReadNextTile_dpss): check for a SERVER_DIED return code from
issReadBlocks. If we get this, then call tsmReconnect_dpss to try
and reconnect to the server
* tsmConnection_dpss.c (tsmConnect_dpss): initialise the DPSS
reconnect mutex lock
(tsmDisconnect_dpss): do a pthread_kill on the reconnect thread if
it is currently running, and then destroy the mutex lock
* tsmConnectionInt.h: added new fields to the TsmConnectionDpss
data structure: a pthread_t and a pthread_mutex_t. These are for
controlling the DPSS reconnect thread.
Tue Apr 20 09:23:44 1999 <reddy@MAGNOLIA>
* tsmVRML.c (tsmGetMetadataNode): changed function so that it
outputs trace messages on error, but not a tsmError. This way it
can fail silently and the calling function can report the error.
Mon Apr 19 10:42:44 1999 <reddy@MAGNOLIA>
* tsmDatabase_local.c (tsmParseDatabaseLine): use the new
tspExtractAllStrdup function to parse a string from the database
file - this will now make sure that we strip all spaces and quotes
from the start/end of the string.
* TsTileSpecParse.c (tspStripQuotes): [new func] strips all space
and quote characters from the start and end of a string.
(tspExtractAllStrdup): [new func] as a complement to the
tspExtractNthStrdup functions, this function will just do an
strdup on a string and then call tspStripQuotes to strip all of
the leading/trailing quotes and spaces.
Thu Apr 15 09:42:44 1999 <reddy@MAGNOLIA>
* tsmImage.c (tsmReadImage): read the image's magic header to work
out the image format, then close and reopen the file. This is less
efficient but seems to be more stable than trying to do a
rewind/dup, particularly given that the handle could be for a file
coming over http.
1999-04-19 Lee Iverson <leei@Canada.AI.SRI.COM>
* TsTileSpecParse.c (tspReadLineFromTspec): Correct logic for
detecting empty lines to avoid buffer overruns.
1999-04-14 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmExtProts.h (tsmGetPyramidInfos): Constiify decl.
(tsmSetIdToPyramidTspecUrl): Ditto.
(tsmPyramidUrlFromSetId): Ditto.
(tsmPyramidUrlFromString): Ditto.
(tsmGeoPyramidNameToUrl): Ditto.
(tsmPyramidNameToUrl): Ditto.
(tsmGeoPyramidNameToId): Ditto.
(tsmPyramidNameToId): Ditto.
* tsmIntProts.h (tsmNameToUrl): Update decl to return (char const *).
* tsmLocalDbase.c (tsmAddToPyramidDatabase): Constification of
various strings.
(tsmAddToGeoPyramidDatabase): Ditto.
* tsmLocalDbase.h (struct TsmLocalDbase): Constification of names
and urls fields.
* tsmPyramidInfo.c (tsmGetPyramidInfos): Constification of
pyramidNames arg.
(tsmGetGeoPyramidInfo): Pass pyramidNames arg to
tsmGetPyramidInfos as (char const **).
* tsmPyramidInfo_dpss.c (tsmGetPyramidInfo_dsm): Constification of
various strings.
* tsmPyramidInfo_local.c (tsmWriteNameUrlIds): Constification of
various strings.
* tsmUtils.c (tsmParseIdentifier): Constification of various strings.
(tsmMakeNameUrlIds): Ditto.
(tsmFreeNameUrlIds): Ditto.
(tsmNameToUrl): Returns char const *
(tsmSetIdToPyramidTspecUrl): Constification of hostName arg.
(tsmPyramidUrlFromSetId): Constification of hostName and uri args.
(tsmPyramidUrlFromString): Constification of hostName, uri and
string args.
(tsmGeoPyramidNameToUrl): Constification of geoPyramidName arg.
(tsmPyramidNameToUrl): Constification of pyramidName arg.
(tsmGeoPyramidNameToId): Constification of geoPyramidName arg.
(tsmPyramidNameToId): Constification of pyramidName arg.
Sun Apr 11 15:32:06 1999 Martin Reddy <reddy@MAGNOLIA>
* tsmDatabase.c (tsmReadModel): now we actually try to open a VRML
feature file when we are doing a re-read server action. We look
for the METADATA node in this file and extract the values of all
supported fields for the database. Currently, we just get the
"name" value from the Metadata's info exposedField and insert this
into the title field of the TsmModel.
* tsmDatabase_local.c (tsmParseDatabaseLine): parse the title field
* tsmDatabase.c (tsmFreeModel): free the new title field
(tsmPrintModel): output the title field string
(tsmReadModel): set default title field from the name field
(tsmAddModelToDatabase): copy the title field
* tsmDatabase.h: added a title field in order to give a more
user-friendly and descriptive title to a feature file
* tsmVRML.c (tsmGetMetadataNode): [new func] takes a VRML scene
graph and returns the MFString for the info exposedField of the
node that has been DEF-named as METADATA.
(tsmParseMetadataInfo): [new func] parses the info field of a
METADATA node looking for a specified token - returns the value
part of that token if found.
Thu Apr 08 11:29:16 1999 Martin Reddy <reddy@MAGNOLIA>
* tsmPyramidInfo_local.c (tsmReadNameUrlIds): changed the way we
read a PyramidUrls file. We no longer need to specify a number at
the top of the file to dictate the number of entries. Now we read
each line and add it to the list dynamically. We ignore lines that
do not have quotes, or begin with '#'. Therefore, we can still
read older PyramidUrls files without modification.
* tsmUtils.c (tsmMakeNameUrlIds): allow the creation of NameUrlIds
structures with 0 entries (all arrays are NULL).
Sat Mar 27 19:55:23 1999 Martin Reddy <reddy@MAGNOLIA>
* tsmConnection.c (tsmBeginLogging): the LBNL NetLogger function
NetLoggerOpen returns a valid (non-NULL) pointer even if the log
file/socket was not opened!!! We need to explicitly check the
log_fp and log_socket fields - if both are NULL, then the log file
could not be opened so we do our own clean up and return a FALSE
result.
Mon Mar 22 17:24:14 1999 Martin Reddy <reddy@MAGNOLIA>
* TsTileSpecParse.c (tspReadLineFromTspec): strip CR symbol as
well as LF symbol from the end of a line. This now means that
tspec files and database files can be edited on a PC.
* tsmDatabase.c (tsmGetGeoSet): [new func] finds a named geoset
entry in a TsmDatabase
Sun Mar 21 15:06:05 1999 Martin Reddy <reddy@MAGNOLIA>
* tsmJPEG.c: include jpeglib.h as <jpeg/jpeglib.h> and not
"jpeg/jpeglib.h"
* tsmVRML.c: include vrml2 headers as <vrml2/c_nodes.h> and
<vrml2/vrml2.h>, not "vrml2/c_nodes.h" and "vrml2/vrml2.h"
* tsmInternal.h: include vrml2.h as <vrml2/vrml2.h> not
"vrml2/vrml2/h"
1999-03-19 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.in: Regenerate
* aclocal.m4: Regenerate.
* config.h.in: Regenerate.
* configure: Regenerate.
* tsmConnectionInt.h: Move DPSS includes from tsmInternal.h to here.
* tsmInternal.h; Remove DPSS includes.
* tsmConnection_dpss.c: Redo DPSS includes for DPSS 2.5.2.
* tsmEmulateInt.h: Ditto.
* tsmPyramidInfo_dpss.c: Ditto.
* tsmTile_dpss.c: Ditto.
* tsmImage.c (tsmReadImage): Cast header back to (char*) for
strncmp() calls.
1999-03-17 Lee Iverson <leei@canoe.ai.sri.com>
* tsmTile_local.c (tsmReadTILE_local): Can't check ferror() for a
closed fp, so moved fclose() to just before return.
1999-03-16 Lee Iverson <leei@canoe.ai.sri.com>
* acconfig.h: Add _config_h_ guards.
Add alloca() definition.
* configure.in (AM_MAINTAINER_MODE): Add.
(AM_PROG_INSTALL): <= AC_PROG_INSTALL
* tsm.h (pow2i): Renamed from pow2 to avoid math.h clash.
* tsmAllocTspecs.c (tsmFillSimpleTileSets): Use pow2i() instead of
pow2().
* tsmImage.c (tsmSaveImageGIF): Return FALSE, not NULL.
(gif_read): Use fileno() for FILE->fdesc.
(tsmReadImage): Make header[] unsigned.
* tsmInternal.h: Remove alloca() specialization.
Thu Mar 11 10:22:55 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmImage.c (tsmSaveImageGIF): takes an RGB image and writes it
out to a file using the GNU ungif library. N.B. this outputs
uncompressed GIF so we don't need to worry about licensing issues
with the LZW compression scheme.
(rgb_image_to_gif_file): this old function is now just a wrapper
to the new tsmSaveImageGIF, instead of using the hacked XV routines.
* rgb_image_to_gif.c: [removed] (use new ungif lib writer)
* xv.h: [removed] (use new ungif lib write)
* xv24to8.h: [removed] (use new ungif lib writer)
* gd.h: [removed] (use new ungif lib writer)
* gd.c: [removed] (use new ungif lib writer)
* gdfontl.h: [removed] (use new ungif lib writer)
* gdfontl.c: [removed] (use new ungif lib writer)
* gdfonts.h: [removed] (use new ungif lib writer)
* gdfonts.c: [removed] (use new ungif lib writer)
* tsmInternal.h: remove cruft required for xv24to8.c
Wed Mar 10 14:18:56 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmImage.c (tsmWriteImage): [new func] writes out an Image_t
structure to a number of possible image formats. Currently just
support PPM.
(tsmFreeImage): [new func] frees an Image_t structure
Tue Mar 9 09:55:42 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmImage.c (tsmReadImage): [new func] this function will read a
number of supported image formats from a localdisk or http
url. Currently, we support PPM, GIF, and JPEG/JFIF format images.
* configure.in: compile and link with the ungif library includes
and library.
* tsm.h: change include from "tsmTrace.h" to <tsm/tsmTrace.h> so
that this file gets pulled in if you have configured separate
build and source directories (tsmTrace is in the build dir).
* configure.in: also add -I.. to the include line so that we can
pull in the automatically generated tsmTrace.h file that sits in
the build directory and not the source directory (these are only
different if you have configured them to be so).
Mon Mar 8 09:04:50 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecDecs.x: removed obsolete structures:
MultiImageTileSet, TerraFormRectangularAreaTspec,
TerraFormRectangularAreaTileSet, RectangularORGATileSet,
RectangularORGATspec
* tsmTspecUtils.c: removed all of the routines that worked on all
those obsolete structures (RectangularORGA, etc.)
* TsTileSpecOut.c: ditto
* TsTileSpecIn.c: ditto
* tsmDatabase.c (tsmAddMapToDatabase): [new func] adds a TsmMap
entry to the database if it does not already exist
(tsmAddMapsToGeoSets): goes through the list of maps and
associates them with geosets based upon the base name of the map
and OI.
(tsmReadMap): reads a map.info file in the specified map directory
in order to find the filename and (u,v) coordinates
(tsmReadModel): makes a new TsmModel structure and fills in the
required fields. Currently we don't try to parse the METADATA node
of the VRML site model, but if wan't to store more info about the
site model in the database then we will need to do this.
(tsmAddModelToDatabase): [new func] adds a new TsmModel entry to
the database if it does not already exist
(tsmAddModelsToGeoSets): goes through the list of models and
associates them with geosets, as with tsmAddMapsToGeoSets
* tsmPurl.c (tsmIsUrlValid): [new func] simply utility function
that uses tsmParseUrl to check if a string is a valid URL.
* tsmDatabase_local.c (tsmNewMapLocation): [new func] adds a new
Purl to the array of location Purls in a TsmMap structure
* tsmDatabase.c (tsmRemoveMapFromDatabase): [new func] removes the
named map from the database
(tsmRemoveModelFromDatabase): ditto for a named model
(tsmGetMap): [new func] returns a named TsmMap from the database
(tsmGetModel): [new func] returns a named TsmModel from database
Sun Mar 7 11:53:04 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase_local.c (tsmNewModelLocation): [new func] add a new
Purl to the array of location Purls in a TsmModel structure
Sat Mar 6 12:54:33 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase_local.c (tsmNewDatabaseMap): [new func] grow the map
array in the database structure by one entry
(tsmNewDatabaseModel): [new func] ditto for the model array
Fri Mar 5 16:10:52 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmPrintMap): [new func] print a TsmMap struct
(tsmPrintModel): [new func] print a TsmModel struct
(tsmFreeMap): [new func] deallocates a TsmMap struct
(tsmFreeModel): [new func] deallocates a TsmModel struct
(tsmFreeDatabase): free the map/model structures as well
(tsmPrintDatabase): print the map/model structures as well
(tsmFreeGeoSetContents): free the map/model name entries
* tsmDatabase.h: added a TsmMap data structure to hold information
about a single map instance, and a TsmModel structure to hold
information about a single model. Added support for an array of
both of these in the TsmGeoSet structure.
Tue Feb 23 08:23:31 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionInt.h (ConnectionCommonFields): added fields to
store the start/end time of a request list and the number of
different types of tile requests in the list
* tsmTile.c (tsmTileReqBegin): initialise request list stats
(tsmTileReqAdd): increment the log count for the priority of tile
(tsmTileReqEnd): record the time taken to send the request list
(tsmTileReqInfo): [new func] returns the information about the
last request list that was sent to the server.
1999-02-26 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in: Explicitly include and link in ../jpeg since no
longer exposed by TV_LIBTIFF.
* Regenerate configure.
1999-02-24 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (CPPFLAGS): Add a single -I$srcdir/.. at start.
Remove creation of symbolic link to tsm (non-portable).
Directory must be named tsm.
1999-02-22 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in: Modify includes for pthrutil library.
Make symbolic link to tsm at configure time.
* Makefile.am: Remove build of symbolic link to tsm.
Fri Feb 05 18:19:28 1999 Martin Reddy <reddy@Magnolia.AI.SRI.COM>
* tsmUtils.c (tsmSetWebBrowser): [new func] lets you specify the
command that is used to run your web browser. By default, this is
"netscape".
(tsmShowUrl): if we are running under Windows, or if the web
browser to use is not netscape, then don't bother with all that
fancy "netscape -remote" shell script stuff -just run the program.
Thu Feb 4 09:33:49 1999 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmInternal.h: include tiffio.h here. This header is only
included by internal tsmApi code and is not visible to clients
that use the tsmApi library.
* TsTileSpecDecs.x: removed tiffio.h include from here. It was
previously needed when we embedded TIFF file handles in the
Pyramid structure, but now that is nice and clean in the
TsmConnection structure so we don't need to include tiffio.h here.
Fri Dec 11 12:57:25 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmAppendVRML): takes a piece of VRML code and
appends it to a string, creating the string if it is NULL. This
correctly deals with placing the VRML header at the top and
nowhere else. We can only do one vsgParseString for a VRML file so
this gives us a way to build that string from multiple sources
before passing to vsgParseString.
(tsmCreateLODStructure): don't need to include the Cache node in
the old-style tree files - this is only required for QuadLOD.
(tsmCreateQuadLODStructure): If we are creating geotiles then we
embed these as a node in the QuadLOD structure. Also updated code
to use tsmAppendVRML to select which EXTERNPROTOs to put in the
tree files.
(tsmMakeGeoTile): [new func] creates an instance of a GeoTile
node. This can then be inserted into the QuadLOD parentNode field
Wed Dec 9 20:49:46 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecOut.c (tspSaveTspec): save out the map fields when
writing a tspec file
* tsmAllocTspecs.c (tsmFreeTspec): free the mapName string (if
set) when freeing a Pyramid structure
(tsmCopyPyramid): copy the mapName string (if set)
* TsTileSpecParse.c (tspParseTspecLine): added routines to parse
the new map fields from a tspec file.
* TsTileSpecDecs.x: added fields to the Pyramid structure to hold
a map name and its min/max (u,v) coordinates, i.e. we currently
assume that the map image is in the same coordinate system as the
pyramid data.
Tue Dec 8 11:24:05 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmImageUtils.c (tsmTileToRgb): remove the check for the old
tileTspec->storageFormat field - this went away years ago!
Mon Dec 7 17:26:05 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_web.c (tsmReadNextTile_web): enable reading of tiles
from an http server. This is done by creating a new url which
points to a /cgi-bin/get_http_tile CGI script on the web
server. We can now read TIFF format files over the web!
(tsmCheckTileFormat_web): [new func] check whether an http dataset
is in .tile or .tiff format
(tsmCheckTIFFFormat_web): [new func] check whether an http dataset
is a raw, jpeg, or lzw TIFF file.
* tsmConnection_web.c (tsmConnect_web): allow connections to http
datasets and do all of the standard checks for tile/image format,
etc.
* tsmUrlToFile.c (tsmSkipHttpHeader): make the http file not found
test more robust - previously only worked for http 1.0. Also,
check for Forbidden (403) as well as File Not Found (404).
Mon Nov 23 17:30:33 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c (tsmCopyParams): [new func] performs a
deep copy on the specified TsmConnectionParams structure.
Thu Nov 19 10:29:44 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmInternal.h: only include net/route.h when on an SGI. This
doesn't seem to be required anyway - can probably be removed
altogether.
* tsmLAS_IO.h: [renamed from ezio.h]. Removed unused vars/defs,
renamed defines like BYTE to TSM_EZ_BYTE to avoid conflict with
defines on the PC. (N.B. this will require a rm -rf .deps and
reconfigure in the tsmApi dir)
* tsmLAS_IO.c: [renamed from ezio.c]. Integrated more tightly with
tsmApi way of doing things: function names, return codes, etc.
1998-11-13 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile_dpss.c (tsmReadNextTile_dpss): Correct printf format string.
* tsmTile.c (tsmTileReqAdd): Undo the TSMTRINC() indentation on
eqhash_get() != 0 return.
* acconfig.h: Remove #undef HAVE_JPEG_CREATE_COMPRESS.
* configure.in: Remove AC_DEFINE(HAVE_JPEG_CREATE_COMPRESS).
* tsmJPEG.c: Disable HAVE_JPEG_CREATE_COMPRESS test.
Fri Nov 13 09:54:13 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* All: added "Exhibit A" portion of tsmApi license agreement to
all source code files.
* LICENSE: [new file] add a text version of the tsmApi license
* tsmVRML.c (tsmWriteAllImages): we made a copy of the tspec
structure, but tsmSetTspecField does this for us already, so we
had an extra tspec structure hanging around that was never
deallocated. Fixed now.
(tsmWriteAllImages): we didn't do a tsmDisconnect when we had
finished with the temporary write connection!
Thu Nov 12 10:47:52 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmWriteAllImages): support the start_level and
end_level settings in the params structure so that we can create
partial JPEG pyramids instead of only the full pyramid.
* tsmVRMLUtils.c (tsmVRMLCacheFree): we weren't free the memory
for the DEM tiles that we read in! Geeeez.
(tsmVRMLCacheAdd): ditto
* tsmVRML.c (tsmWriteAllTrees): validate the user-specified start
and end levels to ensure that they are in the range of valid level
numbers for the dataset.
(tsmWriteAllVtiles): ditto
* tsmConnectionParams.c (tsmFreeParams): free the vrml_dir,
vrml_url strings if they have been defined.
(tsmSetParam): free the previous TSM_PARM_VRML_DIR or
TSM_PARAM_VRML_URL string (if exist) before setting new one.
* tree.c (main): print an SRI copyright message when run
* vtile.c (main): print an SRI copyright message when run
* image.c (main): print an SRI copyright message when run
Tue Nov 3 17:38:41 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c: updated GlobalState.wrl and Cache.wrl URLs to reflect
a new directory organisation: GlobalState.wrl now lives in the
GeoTile directory and Cache.wrl now lives in the QuadLOD
directory. See /homedir/magic/VRMLSets/protos/. Also added a few
more error checks around VRML pointers, just in case.
Fri Oct 30 09:01:37 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmCreateTreeGraph): put the GlobalState and Cache
nodes into the Anchor tree files if we are also creating GeoTiles.
(tsmWriteGeotile): if the geotile file exists, then read it in and
parse its contents so that we don't destroy current geotile info.
Thu Oct 29 12:38:43 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (CreateAnchor): removed the freeString function and
all of the vsgRegisterExtern callbacks that free strings using
this. Now we can just use the vsgStrdup obstack functions.
(vtileStr): put the vtileProto instance inside a Group node.
(tsmAppendNodeMFString): [new func] appends a string to an
MFString field of an SFNode - used for updating GeoTile entries.
* tsmTspec.c (tsmValidateTspec): added check to make sure that the
geo-name field is set up loading of a tspec file.
* tsmUtils.c (tsmEnsureGeoNameSet): [new func] checks to see if a
geo-name has been specified for a pyramid. If not, then it will
generate one automatically from the pyramid name.
Tue Oct 27 15:50:21 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmWriteVRMLIndex): [new func] generates an
index.html file for the dataset that redirects the web browser to
the root tree file. This is now called by tsmWriteAllTrees().
(tsmWriteAllTrees): only write out the arrow and zoom widgets if
we are making an old anchor-lod tree file. We don't need these for
QuadLOD.
* tsmArg.c (tsmParseVRMLArgs): added a -rootlevel command line
option to specify the root (entry point) tree file level.
* tsmConnectionParams.h (TSM_PARAM_ROOT_LEVEL): added a new
connection param setting to control the level number of the entry
tree file, e.g. the default 2 means trees/2/p0p0.wrl.
* tsmVRML.c (tsmSetNodeSFVec3f): [new func] convenience function
that takes a node name, a field name, and an SFVec3f, then finds
that node in the world and sets the value of that SFVec3f field.
* tsmTile_dpss.c (tsmReadNextTile_dpss): added validity checks of
the issReadBlocks data. Currently, during a server down fault,
issReadBlocks will return invalid data but a result of ISS_OK. We
therefore have to check to see if the tile data is okay and fake a
SERVER_DIED return code if it looks screwy. This should be removed
when issReadBlocks does the right thing.
* tsmVRML.c (tsmSetNodeMFString): [new func] convenience function
that takes a node name, a field name, and a string, then finds
that node in the world and sets the value of the specified
MFString field.
(tsmWriteAllTrees): changed all of the QuadLOD fprintf code to use
the new vrml parser for generating VRML. Also added code to output
the GlobalState and Cache nodes for the root tree file.
Fri Oct 23 17:24:01 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecParse.c (tspReadTspec): move the code that makes up a
geo-name field if not specified to the higher level function
tsmReadTspec_local. This means that the check is also done for the
old style multi-file tspec format too, instead of just tiles.tspec.
Thu Oct 22 10:25:31 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c: changed all references to TSM_PARAM_ABS_URL and
absurl to TSM_PARAM_VRML_URL and vrml_url. Also changed all
EXTERNPROTO urls so that all proto files are stored in the
../../protos/ directory (no more lib/ directory), and also provide
a fallback absolute url to www.ai.sri.com/VRMLSets.
(tsmWriteAllTrees): use the GeoSet name as the default
terrainName value for a terrain when adding a GeoTile entry.
* tsmConnectionParams.c (tsmInitParams): change the default value
of absurl from "http://www.ai.sri.com/VRMLSets" to "../../". This
means that we no longer need any conditional code all over the
place to selectively put in the absolute URL or the relative
prefix. The name absurl is now slightly confusing so this has been
changed to vrml_url, and TSM_PARAM_ABS_URL becomes
TSM_PARAM_VRML_URL.
(tsmSetParam): if the user specifies a vrml_url or a vrml_dir with
a trailing '/' then strip this so that we can always do "%s/dir"
when appending directory or filenames to these.
* tsmDatabase.c (tsmUpdateDatabaseFromServer): removed some unused
variables.
* tsmTile_dpss.c (tsmReadNextTile_dpss): return TSM_NODATA if
issReadBlocks returns SERVER_DIED.
Fri Oct 16 10:59:14 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRMLUtils.c (tv2vGetCoords): change references to floorf to
just floor as floorf and ffloor are non-ANSI and only available
under IRIX.
1998-10-16 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile_dpss.c (tsmReadNextTile_dpss): Remove ugly (and
unecessary) dangling else in SERVER_DIED handler.
Thu Oct 15 17:35:59 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_dpss.c (tsmReadNextTile_dpss): conditionally compile the
check for SERVER_DIED. Only compile if this is defined in the DPSS
libs.
Wed Oct 14 14:12:41 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* Makefile.am (EXTRA_PROGRAMS): change the VRML generation programs
(image tree vtile) from bin_PROGRAMS to EXTRA_PROGRAMS. This means
that they are not recompiled every single time you recompile the
tsmApi library. You can can them explicity, "make image".
* config.h.in: removed the ISS and DPSS24 defines and replaces
these with just DPSS. Also updated all references in the tsmApi
source code.
* tsmConnection.c (tsmSet): missing semi-colon.
Tue Oct 13 13:58:12 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_dpss.c (tsmReadNextTile_dpss): explicitly check to see
if a server has died when issReadBlocks fails. If so, then output
a trace message and return a failure for tsmReadNextTile.
Mon Oct 12 11:24:29 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* configure.in (LIBS): changed $updir instances to "../" for the
pthr libs. For some reason, $updir was no longer defined and so
the link line had -L/pthr instead of -L../pthr.
(LIBS): rearranged the position of the pthread lib on the link
line as the DPSS libs (12 Oct 98) now makes use of pthread calls.
* tsmConnection_dpss.c (tsmBeginLogging_dpss): the dummy (non
DPSS) stub for this function didn't have the same number of
arguments as the prototype. Fixed now.
(tsmConnect_dpss): when writing a new DPSS set, if a server
combination is not specified then use the default server list from
the DPSS hwdb structure.
1998-10-13 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmAllocTspecs.c (tsmFillSimpleTileSets): Copy ixiytoUV from
minLevel and then transform and invert. More numerically stable
than the inverse.
1998-10-09 Lee Iverson <leei@Canada.AI.SRI.COM>
* test: Delete directory.
* image.c: Moved from test.
* tree.c: Moved from test.
* vtile.c: Moved from test.
* Makefile.am: Move test/Makefile here.
(bin_PROGRAMS): Add image tree vtile.
(image_{SOURCES,DEPENDENCIES,LDADD}): Define image.c compilation.
(tree_{SOURCES,DEPENDENCIES,LDADD}): Define tree.c compilation.
(vtile_{SOURCES,DEPENDENCIES,LDADD}): Define vtile.c compilation.
(vtiles, trees, round-earth, flat-earth): Moved from test/Makefile.
(colorado): Ditto.
(p-icon, pendleton-vtiles, pendleton-trees, pendleton): Ditto.
(pend1deg-vtiles, pend1deg-trees, pend1deg): Ditto.
(geotile-vtiles, geotile-trees, geotile): Ditto.
(test, test-vtiles): Ditto.
(ctrees, cvtiles, ): Ditto.
(btrees, bvtiles): Ditto.
(etrees, evtiles, eimages): Ditto.
(ytrees, yvtiles): Ditto.
(ctrees-pc, cvtiles-pc): Ditto.
(benning-trees, benning-vtiles, benning): Ditto.
* tsmConnection.c (tsmConnect): Change protoCtx -> protoWrl.
Don't call vsgcSetupPrinting() (obsolete).
(tsmDisconnect): Change DestroyProtoCtx -> DestroyProtoWrl.
* tsmConnectionInt.h (ConnectionCommonFields): Rename protoCtx
field to protoWrl.
* tsmVRML.c: Reflect changes to vrml2 interface from newapi merge.
Sat Sep 12 18:42:44 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmPurl.c (tsmParseUrl): whenever we create a Purl, go through
the uri string and collapse any multiple contiguous '/ symbols to
one '/', so we don't get things like /homedir/reddy//.TerraVision
Mon Aug 31 09:23:13 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.h: added a TSM_TSPEC_URL value for tsmGet to
recognise and return the URL where the tspec file for a dataset
was loaded from.
* tsmConnection.c (tsmGet): support the new TSM_TSPEC_URL setting
Fri Aug 28 09:22:54 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmStringToPlanet): [new func] converts a string
into a TsmPlanet enumerated type
(tsmPlanetToString): [new func] converts a TsmPlanet to a string
* TsTileSpecDecs.x: (Pyramid): add a geoName field and planet
field to the tspec definition. With these in the pyramid tspec,
and with the global database, we no longer need GeoPyramids!
* tsmCreate.h: added a geoName and planet field to the parameter
structure for creating tspecs (TsmTspecParams).
* tsmCreate.c (tsmInitTspecParams): define default values for
geoName (NULL) and planet (TSM_EARTH) when initialising a
TsmTspecParams structure.
* TsTileSpecGen.c (tspCreatePyramid): create the geoName and
planet fields based upon the values in TsmTspecParams.
* TsTileSpecOut.c (tspSaveIdentityTspec_fp): write out the geoName
and planet information to the IdentityTspec section of tspec files.
* TsTileSpecParse.c (tspParseTspecLine): parse the geoName and
planet fields from a tspec file and enter into Pyramid struct
(tspReadTspec): specify default geoName and planet fields if not
defined in the tspec file.
* tsmAllocTspecs.c (tsmCopyPyramid): copy the geoName field when
copying a Pyramid structure
(tsmFreeTspec): free the geoName field when freeing a Pyramid
* tsmDatabase.h: moved TsmPlanet into TsTileSpecDecs.x so that it
can be accessed by the Pyramid definition.
* tsmDatabase.c (tsmPrintDataSet): add support for representing
lzw compressed datasets in addition to lrbt and jpeg.
(tsmUpdateDatabaseFromServer): check for lzw compressed datasets
when checking image formats
* tsmDatabase_local.c (tsmParseDatabaseLine): support parsing of
the lzw token for the formats field of a dataset database entry.
Thu Aug 27 18:28:20 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c (tsmPrintParams): added a few connection
parameters that were missing, e.g. DPSS_TSPEC, VALIDATE_TSPEC, etc.
Tue Aug 25 11:14:27 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmAddServerToDatabase): normalise the url before
checking to see if it exists in the database. Do this by running
it through tsmParseUrl first and using purl->url.
* tsmDatabase_local.c (tsmNewDatabaseServer): when creating a new
server structure, explicity set the last_contact time to be -1,
indicating that the server has not been contacted yet.
* tsmUtils.c (tsmDateString): if you pass a value of -1, then a
result of "n/a" is generated.
1998-08-26 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (CPPFLAGS): Add -I$updir/pthr to get pthr/sysconfig.h.
* tsmConnection.c (tsmConnect): Initialize request_table if
TSM_PARAM_REQUEST_CHECK is set.
* tsmConnectionInt.h (ConnectionCommonFields): Add request_table
field.
* tsmConnectionParams.c (tsmSetParam): Move va_start() and
va_end() outside of switch so we only need to do each once!
Add case TSM_PARAM_REQUEST_CHECK.
* tsmConnectionParams.h (TSM_PARAM_*): Renumber flags using (1<<n)
(TSM_PARAM_REQUEST_CHECK): Add parameter selector to list.
* tsmConnectionParamsInt.h: Add request_check flag to structure.
* tsmExtProts.h (tsmMakeTileId): New. Macro for creating a tile
ID based on x,y,res. Intended to be unique within a dataset
connection.
* tsmInternal.h: Include <pthr/eqhash.h>
* tsmTile.c (tsmReadNextTile): Use tsmMakeTileId() to make tile ID.
(tsmTileReqBegin): Clear request_table if initialized.
(tsmTileReqAdd): Use request_table to check for existing request
and return if found, otherwise register request after entered.
Mon Aug 24 12:28:03 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile.c (tsmReadNextTile): set the tile_id field of the tile
header to a unique 32-bit value based upon the (x,y,res) tuplet
defining the tile. We assign 12 bits for x and y, 6 for res.
* tsmEmulate.c (tsmGetPyramid_params): [new func] does the same as
tsmGetPyramid but allows a TsmConnectionParams structure to be
passed through to the tsmConnect call. This lets us have the
flexibility of new connection parameters in the old tsmApi interface.
(tsmGetPyramid): now just a call to tsmGetPyramid_params with a
NULL parameter setting
1998-08-24 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnect): Remove initialization of
readLocka and readBlockLock.
* tsmConnectionInt.h: Declare tsmReadListReady(),
tsmGrabReadList() and tsmGrabValidReadList().
(ConnectionCommonFields): Remove readLock and readBlockLock.
* tsmTile.c (tsmReadListReady): New. Check whether read list
argument has pending tiles.
(tsmGrabReadList): New. Grab the current read list, checking
whether nextReadList is ready. Optionally locks with requestLock.
(tsmGrabValidReadList): New. Grab the current read list,
optionally blocking if no pending requests.
(tsmReadNextTile): Remove manipulations of read list. Moved
into type-specific reader functions (described below).
(tsmTileReqAdd): Don't signal readBlockCond every time a tile
request is added.
(tsmTileReqEnd): Signal readBlockCond when updating nextReadList.
* tsmTile_dpss.c (tsmReadNextTile_dpss): Call tsmGrabReadList()
and then return TSM_NODATA if not blocking and empty list.
* tsmTile_local.c (tsmReadNextTile_local): Use
tsmGrabValidReadList() for blocking/non-blocking read list
manipulation.
* tsmVRML.c: Change vrml2 library includes to public interface,
not internals.
Sat Aug 22 18:07:08 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.c (tsmAddGeoSetToDatabase): changed the check for
adding a new geoset to the database so that we ignore any geoset
(whatever its name) if the OI and DEM names are then same as those
of the new geoset.
(tsmSortGeoSets): [new func] sorts the geoset array alphabetically
and also removes any degenerate geoset entries (where the OI and
DEM do not exist in the database).
(tsmWriteDatabase): call tsmSortGeoSets before saving a database
to ensure that we write sorted geosets and remove degenerates.
Fri Aug 21 14:43:02 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParamsInt.h: changed the flag field from an int to
a long so that we can handle more than 32 parameter bits.
* tsmConnectionParams.h (TSM_TREE_TYPE_ANCHOR): there was a define
to 1 and 2<<0 which are the same thing. Reorganised numbers
accordingly.
* tsmConnectionParams.c (tsmSetParam): use varargs to handle
values of different types instead of lots of hokey macro stuff and
tons of pointer dereferencing. Now much cleaner.
* tsmConnection.c (tsmSet): ditto on the varargs thing
Thu Aug 20 13:53:23 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase_local.c (tsmParseDatabaseLine): the name field of
Geoset and Dataset was only parsed as far as the first space, so
names with spaces got chopped off. Now parse entire name.
* tsmConnection.c: added #ifdef DPSS24 blocks around all
references to DPSS specific structures.
Wed Aug 19 14:50:31 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile.c (tsmReadNextTile): if we are doing a blocking read and
there are no more tiles to be read in, then block until we receive
a signal that there are new tiles. If we are not doing blocking
reads (the default), then return TSM_NODATA as usual.
(tsmTileReqAdd): if we are doing blocking reads, then signal the
condition that we have new tiles to play with
* tsmConnection.c (tsmConnect): initialise the blocking read mutex
and condition variable
* tsmConnectionParams.c (tsmInitParams): added a connection
parameter TSM_PARAMS_BLOCKING_READ to specify blocking reads
(FALSE by default).
Tue Aug 18 09:58:02 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmEstimateBoundingBox): for the -fastbbox option,
taking 5 samples (4 corners and center) is not enough to estimate
the bounding box of a large-area geocentric dataset, so we
increase the number of samples for geocentric datasets > 45 deg.
Mon Aug 17 15:09:01 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (AppendViewpoint): [new func] creates a single
Viewpoint node. You give it where you are and where you want to
look at. It also transforms the coords to a Y-up coord system if
creating a flat world.
(AppendViewpoints): put the overhead view in here as well and
clean things up to use the new AppendViewpoint function above.
(CreateTreeGraph): if we are creating a flat world, then the LOD
hierarchy is put inside a Transform node to convert to Y-up.
(WriteIcons): transform the arrow widgets to a Y-up coord frame if
we are creating a flat world. Also, we now only write out the
fields of the DrawArrows EXTERNPROTO declaration that are acutally
used.
* tsmVRMLUtils.c (SetNearPlane): changed the calculation of the
near clip plane to be relative to the scene's bounding box.
* tsmVRMLUtils.h (TSM_MAKE_Y_UP): added a macro to do the
transformation from a z-up coordinate frame to y-up.
Fri Aug 14 15:52:56 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c (tsmSetParamPtr): forget a break statement
after the TSM_PARAM_FAST_BBOXES switch statements.
Thu Aug 13 11:22:23 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmVRML.c (tv2vCreateVtileProto): made absolute URL's not
necessary if not set
* tsmVRMLUtils.c (tv2vGetTexCoords): fixed tex coord calculations
to go from 0 to 1.0 and max out at max valid pixel coord
* tsmVRML.c (tsmWriteVtile): added check for wrap around the world
in params->wrap_lat and wrap_long, and fixed max valid pixel
calculations
Thu Aug 13 12:13:14 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmLog): put mutex locking around the NetLogger
call to log events so that this works in a multi-threaded app
like TerraVision.
(tsmGet): added a TSM_DPSS_SERVERS token to let you get a list of
servers for a DPSS dataset.
Wed Aug 12 21:11:39 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmCrossProduct): renamed function with a tsm prefix
to circumvent name clash with TerraVision function.
(tsmNormalizeVector): ditto
(tsmSubVector): follow suit
Tue Aug 11 14:08:01 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c (tsmInitTspecParams): set the default DEM scale to
1.0 instead of 0.001. The data in the LAS .img files is in meters
but we were multiplying it by 1000 before storing - there's no
point in this, so let's just stick to data at 1 m in the DEMs.
* tsmVRML.c (tsmCalcBoundingBox): if TSM_PARAMS_FAST_BBOXES is set
true, then use the new tsmEstimateBoundingBox function instead.
(tsmEstimateBoundingBox): [new func] estimates the bounding box of
a tile by using the min/max elevation of the entire dataset for
the four corner points and the center point.
* tsmConnectionParams.h: added TSM_PARAMS_FAST_BBOXES connection
parameter to control whether to use a faster but approximate
calculation for bounding boxes, or to do the calc by checking
every single vertex in a tile.
* tsmArg.c (tsmDescribeArgs): added -fastbbox command line parsing
and descriptions.
* tsmCreate_LAS.c (tsmCreateLevelTiles_LASELEV): now uses the
generic tiling function for raw data, which means that we can also
support the wrap around edge pixels for LAS images as well as raw
ones. LAS images are rrrr*gggg*bbbbb* rather than rgbrgb*, however
we can use the generic function here because elevation data are
only bitplane.
* TsTileSpecDecs.x: added wrap_lat and wrap_lon fields to the end
the Pyramid structure.
* tsmAllocTspecs.c (tsmFillSimpleTileSets): automatically evaluate
whether the dataset wraps around the word horiz/vertically. Store
this in tspec->wrap_lon and tspec->wrap->lat, resp.
Mon Aug 10 17:20:29 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate_RAW.c (tsmReadRow_RAW): extend the functionality to
handle cylindrical wrap-around at the end of a raster row.
(tsmCreateLevelTiles_generic): extend the functionality to handle
spherical wrap-around at the top of the world
* tsmConnection.c (tsmConnect): don't let the user use LZW
compression for DEMs as this currently doesn't work - the libtiff
lzw support can't handle our overlap pixels.
Thu Aug 6 09:33:19 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecUtils.c (tspCalcGeoidSeparation): clamp lat/long to
max values if they are over by some small epsilon, to deal with
floating point rouding errors that creep in.
* tsmTile_local.c (tsmReadTIFF_local): use TIFFReadRawTile for
TIFF files with no compression, but TIFFReadEncodedTile for LZW
compressed tiles. N.B. 33x33 DEM tiles causes a problem here as
the decompression (or compression?) routine use the specified tile
size of 32x32 (tiles must be ^2 for TIFF) so we loose data. Need
to fix this.
* tsmVRMLUtils.c (tv2vGetCoords): apply scale/offset to raw data
read before testing against clip value (-9999), also fix the test
as it was checking loc_coords[2] not lerp[px][py].
Wed Aug 5 14:34:05 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate_RAW.c (tsmCreateLevelTiles_generic): if the input data
is 16-bit, and we want to output 32-bit data, then we need to
resample the input data. We assuming signed data here and properly
deal with sign extension to 32-bit.
Tue Aug 4 18:12:16 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmArg.c (tsmParseReadArgs): add -readlzw
(tsmParseWriteArgs): add -writelzw
(tsmDescribeArgs): added description for -readlzw
(tsmDescribeArgs): added description for -writelzw
* tsmConnection_local.c (tsmConnect_local): support the detection
of LZW compressed data, stored as tiles_lzw.tiff.
* tsmTile_local.c (tsmReadTIFF_local): support reading of LZW (and
any other supported compression scheme) tiles. Previously it was
JPEG or raw.
(tsmWriteTIFF_local): write LZW compressed data if selected *
(tsmCheckTIFFFormat_local): support checks for the new LZW scheme
* tsmConnection.c (tsmGet): support the new LZW format
Wed Aug 5 12:10:53 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmArg.c (tsmParseVRMLArgs): added -zclip command line arg
* tsmVRMLUtils.c (tv2vGetCoords): now handles OI and DEM's in
different coordinate systems, and clips out elevation values that
are invalid.
* tsmVRML.c (OILevel2DEMLevel): new function
Mon Jul 20 16:09:31 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmVRML.c (tsmWriteVtile): polys beyond maxValidPixel are no
longer generated. Fixed normal generation problem.
Wed Jul 15 17:40:04 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_dpss.c (tsmBeginLogging_dpss): only do NetLogger
write events if the connection mode is write only (not read/write).
Sat Jul 11 19:44:01 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c (tsmInitParams): disable Nat's normal
generation code by default until this is all working
* tsmVRML.c (tsmWriteAllTrees): added code to output QuadLOD style
tree files. Also, added GlobalState node to tree files.
Mon Jul 6 19:01:41 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmWriteGeotile): [new func] creates a GeoTile file
for the specified tx,ty,level.
(tsmWriteAllTrees): write a geotile for each tree file (unless
parameter structure says no geotiles)
(CreateInline): link to a geotile if parameter structure says we
are creating geotiles, otherwise link to a vtile
Thu Jul 2 13:43:51 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.h (tsmLogTile): [new macro] basically a wrapper to
tsmLog for the common task of logging an event for a single tile
(now logs tile data to a DPSS.BID event for merging with DPSS logs)
Mon Jun 29 15:59:16 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmConnectionParams.c
* tsmConnectionParams.h
* tsmConnectionParamsInt.h
* tsmArg.c
* tsmVRMLUtils.c (tv2vGetCoords): Added UTM coordinate output format
and associated command line args.
Fri Jun 19 10:37:58 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c (tsmSetParamPtr): [new func] does what
tsmSetParam_ used to do, but takes a void * as its value argument
so that you can pass references to non int sized variables.
(tsmSetParam_): is now just a wrapper to tsmSetParamPtr. it still
takes an int as the value argument.
Thu Jun 18 09:59:47 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmVRML.c (tsmWriteAllImages): [new func] used to produce a
pyramid of JPEG tiles from a TV OI pyramid.
* tsmVRMLUtils.c (tsmVRMLCacheInit): [new func] initialise a tile
buffer and bounding box cache
(tsmVRMLCacheFree): [new func] dispose of the cache contents
(tsmVRMLCacheGetBBox): [new func] check for a bounding box in cache
(tsmVRMLCacheGetBuffer): [new func] check for a tile buffer in cache
(tsmVRMLCacheAddBBox): [new func] add a bounding box to cache
(tsmVRMLCacheAddBuffer): [new func] add a tile buffer to cache
(ReadDEMTile): updated to use above caching routines
* tsmVRML.c (tsmCalcBoundingBox): calculates the bounding box for
a tile, taking into account whether it is flat, geocentric, etc.
Uses the above caching routines to cache recently calc'd bboxes.
(tsmWriteAllTrees): routine to create Anchor node type tree
files.
Tue Jun 9 16:43:07 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmArg.c (tsmParseVRMLArgs): added -elevscale and -worldscale
command line args.
* tsmConnectionParamsInt.h: ditto
* tsmConnectionParams.h: ditto
* tsmConnection.c: ditto
* tsmVRMLUtils.c (tv2vGetCoords): make lat/long coords wrap around
at 180 to remove seam from earth.
* tsmVRML.c: made lat/long coords work and speed up in tile access
order
Fri Jun 5 11:41:48 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUTM.c (tsmLatLongToGeocentric): allow longitudes in the range
0..360 as well as -180..180 and also make sure that the result of
lon 180 == -180 and lon 0 == lon 360.
* TsTileSpecUtils.c (tspCalcGeoidSeparation): support longitudes
in the range 0..360 as well as -180..180.
Wed Jun 3 09:26:30 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmArg.c (tsmParsedAllOptions): added a function to return
whether all command line options were parsed and optionally
provide an error report detailing unmatched options.
(tsmGrabArgs): grabs an internal copy of command line and makes an
array of booleans to record which options have been matched
(tsmFreeArgs): frees the boolean array
(tsmSetArg): records an option as being matched
(tsmIsArgSet): asks if an option has been matched
Mon Jun 1 13:06:43 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmBeginLogging): enable DPSS logging when we
log a connection to a DPSS set - this now works with the DPSS 2.5
libs, of 1 June 1998.
* tsmConnection_dpss.c (tsmBeginLogging_dpss): only do DPSS read
logging if the tsm connection is a read connection, and write
logging if a write connection.
1998-05-27 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmConnect): Declare dataset and access_mode args
as char const *.
* tsmExtProts.h (tsmConnect): Declare dataset and access_mode args
as char const *.
* tsmTspec_dpss.c (tsmWriteTspec_dpss): Cast connect to
TsmConnectionDpss * before using.
* tsmVRML.c (CreateTreeGraph): Use SFFloat for floating point
locals.
(WriteIcons): Don't use non-portable %1$g structures in printf().
* tsmConnectionInt.h: #include <vrml2/vrml2.h>
* tsmInternal.h: #include <vrml2/vrml2.h>
* tsmVRMLUtils.h: #include <vrml2/vrml2.h>
Tue May 26 16:06:02 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmEmulate.c (tsmGetConnectionsFromTsmHandle): [new func] lets
us get to the new connection structures from an old TsmHandle
Fri May 22 10:37:21 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmEmulate.c (tsmStartLogging): make this old-style tsmApi call
be a wrapper to the new NetLogger based logging provided in the
connection interface.
(tsmStopLogging): ditto
(tsmPutLog): [new func] an interface to tsmLog for the old
server-based tsmApi interface.
Thu May 21 14:05:48 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmBeginLogging): now uses NetLogger. This
function basically does a NetLoggerOpen call.
(tsmEndLogging): now uses NetLogger - does a NetLoggerClose
(tsmLog): [new func] use NetLogger to write out a generic log
event.
* tsmConnection.h (TV_TILE_IN_CACHE): added a number of standard
log event names for use with tsmLog
* tsmTile.c (tsmReadNextTile): instrumented to generate a
TV_TILE_READ log event if the user has started logging
(tsmTileReqAdd): instrumented to generate a TV_TILE_REQ event
(tsmWriteTile): instrumented to generate a TV_TILE_WRITE event
* tsmConnection.c: moved vrml2.h include into tsmInternal.h
(tsmDisconnect): automatically do a tsmEndLogging call on a
tsmDisconnect if we are currently logging data.
* logging.c (NetLoggerWriteString): updated LBL's NetLogger code
to include a NetLoggerWriteString function and to use tsmApi's
DPSS24 define to avoid multiple references when compiled against
the DPSS libs.
* tsmEmulate.c (tsmOpen): if tsmOpen("") format used, then
initialise the port, uri, and hostName fields of the dbPurl using
tsmMemStrdup so that we don't free non-heap mem in tsmFreePurl.
Tue May 19 16:13:38 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecGen.c (tspCreatePyramid): changed name from
tspCreatePyramidUTM. Now is more general and can create lat/long
tspec files.
* tsmCreate_LAS.c (tsmParseCreateParams_LAS): support reading
Lat/Long information from .prt files (in addition to UTM)
Fri May 15 18:01:06 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmConnectionParamsInt.h: added variables for VRML params
* tsmArg.c (tsmParseVRMLArgs): added procedure for VRML args
* tsmVRML.c : added file - creates vtiles, geotiles, tree files
* tsmVRMLUtils.c : added file - utilities for above
* tsmVRMLUtils.h: added file
* Makefile.am (pkginclude_HEADERS): added new files and libraries
* configure.in: ditto
Mon May 11 14:27:30 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecOut.c (tspSaveCoordTspec_fp): write out coord tspec
inform for lat/long datasets.
Fri May 8 15:25:55 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecParse.c (tspExtractTokenAndData): if a line in a tspec
file had more than one whitespace between the keyword and the
value, then things blew up. Changing *data++ to (*data)++ fixes
the problem - now if I was a lisp man I'd know all about parens.
* TsTileSpecDecs.x: added tspPointSample as a possible Operation
in the Identity section of the tspec
Thu May 7 14:25:57 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_local.c (tsmCheckTileFormat_local): when checking for
valid .tile data, check for (minTile[0],minTile[1]) and don't just
assume (0,0).
* tsmTile.c (tsmTileReqAdd): added a check to ensure that we never
create a request list with more than TSM_MAX_NUMREQS requests.
* tsm.h (TSM_MAX_NUMREQS): updated the default value of
TSM_MAX_NUMREQS to 8192, as defined by DPSS 2.5
* logging.c: [new file] added LBL's NetLogger C code to tsmApi
* logging.h: [new file] added LBL's NetLogger C code header
Wed May 6 11:35:17 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecUtils.c (tspCalcUTMZone): make this function public
(tspCalcCentralMeridian): ditto
(tspCalcGeoidSeparation): ditto
(tspCalcK0): ditto
* tsmUTM.c (tsmLatLongToGeocentric): assume altitude above sea
level and so add the geoid separation value for the lat/long
region before doing the conversion.
(tsmGeocentricToLatLong): added a new function to perform the
transformation from geocentric coordinates to (lat,long,alt).
* TsTileSpecUtils.c (tspCalcGeoidSeparation): converted the float
params to doubles to prevent rounding problems when casting
doubles into floats.
(tspCalcUTMZone): ditto
Mon May 4 18:17:10 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUTM.c (tsmLatLongToGeocentric): added a function to convert
from a (lat,long,altitude) coordinate into geocentric coordinates.
Fri May 1 11:09:26 1998 Nathaniel Bletter <bletter@Silver.AI.SRI.COM>
* tsmArg.c (tsmGetArgPointer): allows multiple instances of same
arguement by marking used ones.
Fri May 1 21:42:31 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUrlToFile.c (tsmOpenStream): added the tsmOpenStream function
which can take an http or localdisk url, or a local filesystem
filename, and open it with a desired access mode, e.g. "r",
returning a FILE * stream.
(tsmCloseStream): close a stream opened by tsmOpenStream.
(tsmStreamToFile): documented the function and made it external
(tsmStreamToBuffer): ditto
(tsmStreamToStdout): ditto
Mon Apr 13 13:33:55 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection_dpss.c (tsmConnect_dpss): remove the DPSS bug
workaround for issHandle->max_open_desc not being set
correctly. This field has been removed from the latest 2.5 release
(and hence fixes the aforementioned bug).
* TsTileSpecDecs.x: added tspLatLongProjection, tspWGS84, and
tspDegrees to tspSymbol.
* TsTileSpecUtils.c: made changes to tspSymbolStrings to reflect
the above additions to tspSymbol
Fri Apr 10 20:54:15 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c: don't constrain the RAW/LRBT OI data to be only 3
or 1 comps per pixel and 1 byte per pixel. Likewise, don't
constrain RAW/LRBT DEM data to be only 4 bytes per value. E.g. now
we can specify 2-byte DEM data easily.
* tsmCreate_LRBT.c (tsmCreateLevelTiles_LRBT): removed
tsmDownSample_LRBTGRAY and tsmDownSample_LRBTELEV. Renamed
tsmDownSample_LRBTRGB to just tsmDownSample_LRBT and made generic
for any number of components and bytes per component. Did the same
for tsmCreateLevelTiles_LRBT*.
* tsmCreate_RAW.c (tsmCreateLevelTiles_RAWELEV):
* tsmCreate.h: added tile_width, tile_height, tile_overlap_x, and
tile_overlap_y fields to TsmTileParams.
* tsmCreate.c (tsmInitTileParams): initialise tile_width and
tile_height to 128 for OIs, and 32 for DEMs; also initialise
tile_overlap_[x|y] to 0 for OIs and 1 for DEMs.
* tsmCreate_RAW.c (tsmDownSample_RAW): removed
tsmDownSample_RAWGRAY and tsmDownSample_RAWELEV. Renamed
tsmDownSample_RAWRGB to just tsmDownSample_RAW and made generic
for any number of components and bytes per component. Did the same
for tsmCreateLevelTiles_RAW*.
* tsmCreate.h: added a bytes per component field to TsmTileParams
* tsmCreate.c (tsmInitTileParams): initialse bytespercomp to 1 for
OIs and 4 for DEMs.
* tsmImage.h: change name of TSM_PBM enum value to TSM_PPM
* tsmImage.c (tsmSaveImage): write out pgm files with a .ppm
filename extension as well as .ppm files. By definition, a .ppm
file encompasses a .pgm file.
1998-04-09 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTile.c (tsmTileHeaderX): Declare tileHeader as const ptr.
(tsmTileHeaderY): Ditto.
(tsmTileHeaderLevel): Ditto.
(tsmTileHeaderSetId): Ditto.
(tsmTileHeaderSessionId): Ditto.
(tsmTileHeaderTileId): Ditto.
(tsmTileHeaderSize): Ditto.
(tsmTileHeaderChecksum): Ditto.
(tsmTileHeaderType): Ditto.
(tsmTileHeaderConnection): Ditto.
* tsmExtProts.h: Reflect changes from declarations above.
1998-04-06 Lee Iverson <leei@Canada.AI.SRI.COM>
* All files: Add a TSMMASK qualifier to all TSMTR* macro calls.
Sat Apr 4 14:50:04 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmImage.c (tsmSaveImage): when saving a DEM tile, convert this
into a greyscale 1-byte-per-pixel buffer before writing.
* tsmCreate_RAW.c: [new file] contains generic routines to tile up
and downsample raw image data.
* tsmCreate_LRBT.c: [new file] contains routines to tile and
downsample raw data in lrbt (rather than lrtb) format. (uses
generic routines defined in tsmCreate_RAW.c)
* tsmCreate_PBM.c: [new file] contains routines to tile and
downsample PPM and PGM format images. (uses generic routines
defined in tsmCreate_RAW.c)
* TsTileSpecDecs.x: moved the definitions of Footprint and
TsmCoordSystem into here so that rpcgen will generate xdr_
functions for these (they are referenced by Pyramid).
Mon Mar 30 16:32:26 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmCreate.c (tsmInitTspecParams): added a TsmDataSetType
parameter so that structure can be initialised with values for a
particular type of dataset, e.g. OI, DEM, etc.
(tsmInitTileParams): ditto
* tsmImage.c (tsmSaveImagePGM): added function to save out image
tiles in PGM (grayscale) format.
(tsmSaveImage): use the PGM writing function for PBM if the number
of components per pixel is one.
1998-03-30 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmConnection.c (tsmDescribeConnection): Cast tsmGet() return
value to (char *) when appropriate.
Sat Mar 28 12:00:31 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmChecksum.c (tsmCalcTileStats): [new func] calculate the
checksum and min/max pixel values for a tile buffer. Currently
supports 1-byte data (OI) and 4-byte scaled/offset (DEM) data.
(tsmUpdateTileStats): a connection interface to the above function
that will take a tile buffer, calculate the checksum and min/max
values, then add these into the tspec structure as appropriate.
* tsmCreate_LAS.c (tsmCreateLevelTiles_LAS): update the checksum
array and min/max pixel values while we generate new tileset.
(tsmCreateDEMLevelTiles_LAS): ditto
* TsTileSpecGen.c (tspCreatePyramidUTM): set the PixelTspec minVal
and maxVal pixel values to -1.0 by default (not calculated).
Wed Mar 25 10:00:47 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmProgressReport): no semicolon at the end of
the vprintf() statement - but cc didn't complain!
* tsmLocalDbase.c (tsmAddToLocalDbase): [new func] a connection
based interface to adding a new entry to a PyramidUrls database.
* tsmArg.c (tsmDescribeArgs): added information about default
values to the description of command line args
Tue Mar 24 11:01:46 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTspec_dpss.c (tsmReadTspec_dpss): by default we will try to
load a DPSS's tspec from the DPSS dataset itself (unless
TSM_PARAM_DPSS_TSPEC is FALSE). Then we try the metadata URLs.
* tsmTspec_local.c (tsmReadTspec_local): if the params structure
defines a particular tspec format to use, then use it. If none
specified, then try the new tspec files first, then fallback to
the old multi-file tspecs if this is not available.
* tsmTspec_web.c (tsmReadTspec_web): if the params structure
defines a particular tspec format to use, then use it. If none
specified, then try the new tspec files first, then fallback to
the old multi-file tspecs if this is not available.
(tsmReadTspecNEW_web): added tracing information so that we can
tell when new tspecs are being loaded over http
(tsmReadTspecOLD_web): added tracing information so that we can
tell when old tspecs are being loaded over http
* TsTileSpecIn.c (tspReadOldPyramid): added some tracing
information so that we can tell when old tspec files are used.
* TsTileSpecParse.c (tspReadTspec): added some tracing information
so that we can tell when a new tspec file is being parsed.
* tsmArg.c (tsmParseReadArgs): added 3 new command line options:
-readmetadata (only read tspec from metadata URLs), and
-readnewtspec (only read new style localdisk/http tspec files).
-readoldtspec (only read old style localdisk/http tspec files).
(tsmDescribeArgs): describe the three new tspec arguments
* tsmConnectionParams.h: added TSM_PARAM_DPSS_TSPEC and
TSM_PARAM_NEW_TSPEC defines for the connection params.
* tsmConnectionParamsInt.h: added fields for the
TSM_PARAM_DPSS_TSPEC and TSM_PARAM_NEW_TSPEC settings
* tsmTspec_dpss.c (tsmReadEmbeddedTspec_dpss): use the DPSS
function issSendRequestListSynch so that we can easily tell
whether a tspec file has been loaded to the DPSS set. Now this
function no longer hangs if there is no tspec file on the DPSS.
Mon Mar 23 12:28:34 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmAddFilenameExtension): used to remove previous
extension by removing all text after the last ".", but this meant
that "http://host.com/path" changes to "http://host". Now we
check only for a "." after the last "/" (if present).
* TsTileSpecGen.c (tspCreatePyramidUTM): added the ability to pass
in scale and offset values for the tspec
Sun Mar 22 12:58:58 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnection.c (tsmProgressReport): [new func] displays a
message that will be written over by next message (i.e. uses \r)
* tsmConnection.h: changed TSM_COPY_PROGRESS_METER to just
TSM_PROGRESS_METER to make more general.
* tsmCreate.c (tsmCreateTspec): [new file] contains new routines
for generating tile and tspec data using the connection
interface. These routines are extensible to allow the future
plugging in of support for different source file formats,
georeferencing coordinate system, extra parameters, etc.
* tsmCreate_LAS.c: [new file] renamed from tsmTileGen.c. Generates
tile data from EDC's LAS image format. The functions have been
updated to work with the new connection interface.
* tsmCreate.h: [new file] contains structures for generating
tspecs and tile data
* tsm.h (TSM_PATH_ONLY): moved the defines TSM_POINT_SAMPLE and
TSM_GAUSSIAN_FILTER to tsmCreate.h
(TSM_PATH_ONLY): moved the defines TSM_NOW, TSM_NEVER, and
TSM_LATER to tsmTile.h
Fri Mar 20 09:04:41 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmEmulate.c (tsmOpen): removed unused vars
(tsmClose): ditto
* tsmImage.c (tsmSaveImageJFIF): removed unused var
* tsmTspec_dpss.c (tsmReadEmbeddedTspec_dpss): removed unused var
* TsTileSpecGen.c (tspCreatePyramidUTM): updated a reference to
tsmUTMToGeo to the new name tsmUTMToLatLong.
* TsTileSpecOut.c (tspSaveAllSimpleTspecs_fp): removed unused var
* TsTileSpecIn.c (tspReadOldPyramid): removed unused var
* tsmUtils.c (tsmShowUrl): removed unused variable
(tsmAddNewPrepSetIds): removed function
(tsmCopyPyramidLevelToBinaryStream): removed function
* tsmAllocTspecs.c (tsmCopySimpleTileSet): removed unused vars
(tsmCopyPyramid): ditto
(tsmAllocatePyramid): ditto
(tsmFillSimpleTileSets): ditto
* tsmPyramidInfo.c (tsmGrowPyramidInfoServerArray): removed unused
variable
* tsmTileGen.c (tsmDownSample_psample): removed unused variable
* tsmEmulate_dpss.c (tsmGetGeoPyramid_dsm): removed unused variable
* tsmTile_dpss.c (tsmGetExistingBlockMap): removed unused variable
(tsmInitDPSSDataset): ditto
(tsmWriteTile_dpss): ditto
* tsmTile.c (tsmWriteTile): removed unused variable
* tsmConnection_dpss.c (tsmConnect_dpss): removed unused variable
* tsmDatabase.c (tsmFreeGeoSetContents): removed unused variable
(tsmAddGeoSetToDatabase): ditto
(tsmRemoveServerFromDatabase): ditto
(tsmGetDataSet): ditto
Thu Mar 19 10:33:16 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmTranslateEmptyUrlsToNamedUrls): free a urls
string (if not NULL) before setting it to something else.
* tsmAllocTspecs.c (tsmFreeGeoPyramid): free any dynamic memory in
the GeoPyramidTspec portion of a GeoPyramid.
* tsmTspec.c (tsmReadTspec): free the temporary Purl that was alloc'd
* tsmDatabase.c (tsmMakeGeoSet): [new func] allocates a TsmGeoSet
(tsmFreeGeoSetContents): [new func] frees the strings in a TsmGeoSet
(tsmFreeGeoSet): [new func] frees a TsmGeoSet
(tsmPrintGeoSet): [new func] output a TsmGeoSet to a FILE *
(tsmGetDataSet): [new func] searches a database for a dataset
* tsmDatabase_local.c (tsmNewDatabaseGeoSet): [new func] allocate
a new TsmGeoSet entry at the end of a database's array
* tsmDatabase.h: added a TsmGeoSet structure to hold info on an OI
and DEM for a region. Also added a TsmPlanet enum.
* tsmTspec.c (tsmValidateTspec): added some extra validation
checks and some tracing information.
* tsmTile_dpss.c (tsmPrepareDPSSDataset): conditionally compile
the dsiSetReplicated() call based upon whether this macro is
defined. It is avaliable in DPSS 2.4.4, but not in 2.4.3. (tsmApi
now compiles without error for the 2.4.3 libraries.)
Tue Mar 17 10:45:38 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmShowUrl): [new func] will open a URL using
netscape, using a currently opened netscape if already running.
* tsmConnection_local.c (tsmConnect_local): augmented the error
message for when a connect fails with TSM_PARAM_FALLBACK=FALSE so
that we know which instance of the dataset was actually tried.
* tsmTile.c (tsmTileReqAdd): check to see if the tile being
requested exists in the dataset. If not, then exit immediately
with a TRUE status so we don't trip a complete failure.
* tsmTspec_web.c (tsmReadTspec_web): split this function into two:
(tsmReadTspecNEW_web): reads a single-file tspec over http
(tsmReadTspecOLD_web): reads the old multi-file tspecs over http
* tsmArg.c (tsmParseReadArgs): added a -dontvalidatetspec option
(tsmDescribeArgs): ditto
* tsmAllocTspecs.c (tsmFreeTspec): if requested Pyramid is NULL,
then return immediately and don't try to free any memory.
* tsmArg.c (tsmParseInitArgs): [new] renamed from tsmParseArgs to
give more consistent naming (e.g. tsmParseReadArgs, etc.)
* tsmUrlToFile.c (tsmHttpUrlToFile): tsmHttpUrlFd returns FALSE on
error, but return code check only aborted if return code was < 0.
Changed the check to abort if tsmHttpUrlFd returns <= 0.
(tsmHttpUrlToBuffer): ditto
* tsmTspec_web.c (tsmReadTspec_web): add a check to see if
tsmCopyUrlToTmpFile fails - returns error code if this happens.
(tsmReadCoordTspec_web): ditto
(tsmReadIdentityTspec_web): ditto
(tsmReadImageTransformationTspec_web): ditto
(tsmReadPixelTspec_web): ditto
(tsmReadProjectionTspec_web): ditto
(tsmReadPyramidTspec_web): ditto
(tsmReadSimpleTspec_web): ditto
(tsmReadTileTspec_web): ditto
Mon Mar 16 10:30:36 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTspec.c (tsmReadTspec): added routine to validate a tspec
structure once it has been read in. This is not done if the params
structure is valid and has validate_tspec == FALSE.
(tsmValidateTspec): added a function to validate a tspec
structure. This will do various checks to ensure that the fields
in a structure are valid.
* tsmConnectionParams.c (tsmSetParam_): added support for the
TSM_PARAM_VALIDATE_TSPEC setting (TRUE by default).
* tsmConnectionParamsInt.h: added a validate_tspec field to the
TsmConnectionParamsStruct
* tsmConnection_dpss.c (tsmConnect_dpss): augmented the error
message when issPrepareSet fails to suggest that a server reboot
might help matters.
* tsmTile.c (tsmFreeTile): added a tsmFreeTile function that will
free a tile header and a tile buffer in one step.
* tsmConnection.h: change the TSM_CLOSE_DPSS_ON_DISCONNECT setting
to the more meaningful TSM_FINISH_LOAD_ON_DISCONNECT
* tsmLocalDbase_dpss.c (tsmLoadGeoPyramidDatabase_dsm): return
urls as x-dpss:// strings, rather than x-dsm://
(tsmLoadPyramidDatabase_dsm): ditto
* tsmConnection_dpss.c (tsmConnect_dpss): added tracing
information for connecting to a DPSS set.
* tsmConnection.c (tsmConnect): added tracing information to
tsmConnect.
* tsmTile_dpss.c (tsmReadNextTile_dpss): increment the trIndex
field after each tile is read so that we know how many requests
have been fulfilled and can shortcut out of tsmReadNexTile if
there are no tiles to be read.
* tsmTile.c (tsmTileReqAdd): say which dataset the request being
added is for in the trace output.
* tsmTile_dpss.c (tsmReadNextTile_dpss): say which dataset the
tile data is being read from in the trace output, and do this with
a trace level of 2 so that TV will display the info.
* tsmEmulate.c (tsmReqTile): initial trace message didn't provide
variables to match with the printf %d/%p references.
* tsmArg.c (tsmParseArgs): added support for a -version command
line option to display tsmApi revision data/number.
* tsmTspec.c (tsmReadTspec): add a TsmConnectionParams parameter
so that we could potential pass in some optional parameters in the
future without breaking the interface.
Sat Mar 14 00:44:52 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmArg.c (tsmParseConnectArgs): parses the command line and does
a number of tsmSet() calls for certain standard options.
* tsmConnection.c (tsmDescribeConnection): a function to describe
a connection to stdout (name, size, format, mode, servers, etc.)
Fri Mar 13 11:40:12 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmEmulate.c (tsmFreePyramid): tsmFreePyramid can be used to
free a tspec structure return by tsmGetPyramid - this is a big
No-no now because the underlying connection calls manage all the
allocation and freeing of tspec structures for you. tsmFreePyramid
now does nothing (nop) to make sure it doesn't screw things up.
* tsmAllocTspecs.c (tsmFreeTspec): does what tsmFreePyramid used
to do. This is now the way to free a Pyramid structure.
(tsmAllocTspec): a tsmMakePyramid routine to complement
tsmFreeTspec
* tsmArg.c (tsmDescribeArgs): all option descriptions were being
printed out to stdout, instead of those specified.
* TsTileSpecUtils.c (tspCalcGeoidSeparation): wasn't transforming
lat/long values into correct range for lookup table, causing false
error messages for valid inputs.
Thu Mar 12 15:42:06 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile_dpss.c (tsmWriteTile_dpss): added function to write out
tiles to a DPSS set.
(tsmPrepareDPSSDataset): initialises a DPSS write, gets the alloc
info, generates the block map, etc. This is called on first tile
write (so that we can defer block allocation until we have a tspec)
(tsmInitDPSSDataset): do any tsmConnect time initialisations
(those we can do without the tspec).
* tsmDPSSLoad.c: deleted file. moved funcs to tsmTile_dpss.c
* tsmTile.c (tsmTileReqAdd): added checks to see if the requested
tile coordinates and level number exist in the dataset.
Wed Mar 11 11:08:45 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTile.c (tsmReadNextTile): Localdisk speed optimisation!!
Previously if you started a new tile request list before reading
in all of the tiles from an older request list, then the tsmApi
would continue to read from the old request list. Now we discard
the old list as soon as we get a new list and use this new list.
This didn't happen before because there was an uneccessary
condition around the code to check for a new read list which
basically said only switch to a new list if this one is empty or
invalid. This condition now survives only in the memory of CVS.
* tsmPurl.c (tsmSetHttpToLocalFile): disabled the http->file
conversion. This has caused one or two problems in the past with
not doing the conversion correctly (e.g. there is no standard way
to know where an arbitrary web directory exists on localdisk). We
could look into ways to kludge this, but with the new single-file
tspec, accessing info over http is much faster and so maybe we
should just say http is http. I'm open to suggestions though...
* tsmAllocTspecs.c (tsmCopyIdentityTspec): when copying the
IdentityTspec of a pyramid, if the source type was set the a bug
caused the name of the pyrmamid to be also set to the source type.
Tue Mar 10 15:00:04 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmChecksum.c (ip_checksum): moved the function checksum() from
checksum.c to tsmChecksum.c and renamed it as ip_checksum to help
avoid any function name conflicts. It doesn't appear to be used
anyway.
(tsmCalcTileChecksum): add a routine to calculate a checksum for
a single tile under the connection-based API.
* checksum.c: deleted file.
* tsmArg.c: [new file] contains routines to help the parsing of
command line arguments in tsmApi applications and to allow tsmApi
to parse certain command line options itself and act upon these
accordingly.
Sun Mar 8 16:45:38 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* test/: removed all files in the test directory. These files are
now rather out of date. Also, all example source code is currently
available via the web page which means one point of update.
* tsmUTM.c: renamed tsmGeoToUTM as tsmLatLongToUTM to avoid
confusion between geodetic and geocentric.
renamed tsmUTMToGeo as tsmUTMToLatLong
Fri Mar 6 15:13:32 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmEmulate: [new file] contains all of the functions for the
emulation layer of the new tsmApi. These provide backward
compatibility with the old API in way that uses the new interface.
tsmEmulate_dpss.c: [new file] emulation for old DPSS interface.
tsmEmulate_local.c: [new file] emulation for old localdisk interface.
tsmEmulate_web.c: [new file] emulation for old http interface.
* tsmPyramidInfo.c: [new file] contains the old routines for
querying all server information about a dataset.
tsmPyramidInfo_dpss.c: [new file] query DPSS server config
tsmPyramidInfo_dpss.c: [new file] query localdisk config
tsmPyramidInfo_local.c: [new file] query http server config
* tsmLocalDbase: [new file] contains all of the old routines for
managing the local database files: PyramidUrls and GeoPyramidUrls.
tsmLocalDbase_dpss.c: [new file] DSM manipulation functions
tsmLocalDbase_local.c: [new file] localdisk local dbase functions
tsmLocalDbase_web.c: [new file] http functions for local databases
* tsmTopIO_web.c, tsmTopIO_local.c, tsmTopIO_iss.c, tsmTopIO.c,
tsmTileIO_web.c, tsmTileIO_local.c, tsmTileIO_iss.c, tsmTileIO.c,
tsmStructs.h, tsmProts.h, tsmIntDecs.h, tsmInt.h, tsmDecs.h,
locking.h, TsTileSpecProts.h, TsTileSpecGen.h, tsmDecs.c,
TsTileSpec.h: have all been removed.
* tsmInternal.h: [new file] this file is used as a single point to
include all of the required header files for the internal library
code (tsm.h is of course used by external clients).
Thu Mar 5 12:01:22 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmAutoStructs.h: goodbye tsmAutoStructs.h and tsmStructs.h
(yeah, cheer!!). These had to be generated before the main compile
in order to reflect changes in the DPSS TileHeader struct. Also,
because we used the DPSS TileHeader directly we couldn't add any
extra info such as the dataset type. There was also a bug here
that caused compilation to fail without the DPSS libraries. This
is all gone now....
* tsmTile.h, tsmTileInt.h: This is where we now declare the
TsmTileHeader structure, with no dependency on the DPSS TileHeader
structure. The external definition is opaque (and was before - so
we don't break anything). The interal definition has analogs of
the current DPSS TileHeader fields and an extra dataset type field.
* tsmTile_dpss.c (tsmReadNextTile_dpss): we now use issReadBlocks
and read into a DPSS TileHeader structure. Then we map the
relevant fields from the DPSS header into tsmApi's header. Much
cleaner (and this mapping used to happen anyway in libTileSvc so
we don't do any extra work - just hide it inside the library).
1998-03-11 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTileIO.c (tsmGetNextTileHeader): Don't check for invalid
trList until after checking for new one. (From Reddy).
1998-03-05 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmPurl.c (tsmParseUrl): Fix calculation of purl->uri length.
* tsmJPEG.c: #include "tsmInt.h" for configuration.
Optionally define jpeg_create_{,de}compress macros if functions
don't exist. (May be needed for IFL 3.2).
* tsmDatabase.h (TsmCoordSystem): Remove trailing comma.
* configure.in (TV_CONFIG_WITH_PREFIX, TV_TSMCONFIG, TV_LIBTIFF):
Use new m4 macros to replace hairy distributed configuration
sequences.
* acinclude.m4: New file. Centralize a number of tsm/TV-related
configuration definitions. Points to ../acinclude.m4
Thu Feb 26 22:43:53 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmEmulate.c: added support for the x-dpss:// protocol. This can
be used in the case of either x-dsm:// and x-iss://, i.e. if you
don't specify a URI section to the URL then it is assumed to be a
DSM reference, otherwise it refers to the named dataset on the DPSS.
Wed Feb 25 08:17:10 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecDecs.x: removed "test" field from IdentityTspec,
removed the TIFF file handle fields from SimpleTileSet (now all in
the connection handle).
* tsmArray.h: removed the "pyramid" field from the TrItem
structure, and the protocol field from the TrLists
structure. These are no longer needed as a request list now
associated with one specific connection.
Fri Feb 6 11:45:32 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmConnectionParams.c: [new file] extensible hints for connections
(tsmInitParams): initialise a TsmConntionParams structure
(tsmSetParam_): set the entry in a TsmConnectionParams structure
for a particular field. A macro definition, tsmSetParam, is
provided as the user-level point of entry to the function. Current
fields include: set id, server combination, and image format.
(tsmFreeParams): frees up all the memory for a connection param
(tsmPrintParams): displays the settings in a connecton param
* tsmConnectionParams.h: [new file] structure and type defintions
for the connection param facility, including macros to read and
set the flag field of the connection param.
* tsmConnection.c: [new file] manage dataset connections
(tsmConnect): opens a connection to a particular dataset and
returns a connection handle to use for all further calls. Supports
Connection Params (see above).
(tsmDisconnect): routine to clean up once you've finished with a
connection to a particular dataset.
(tsmCheckConnectMode): used by all connection I/O functions to
check the validity of the connection handle and also enforce the
read/write mode of the connection.
(tsmReadTspec): reads a tspec file given a file or http URL. This
is called implicitly by tsmConnect
(tsmWriteTspec): write the tspec file for a particlar connection
(tsmSetTspec): insert a copy of a tspec structure into a
connection structure
(tsmCopyTspec): copy the tspec structure from one connection into
another connection's structure
(tsmSet): set any updatable characteristic of a connection,
e.g. write tiffs?, JPEG compress quality, etc.
(tsmGet): returns the current setting of any connection
characteristic, e.g. dataset name, image format, read/write mode,
JPEG compress quality, etc.
* tsmConnection.h: [new file] contains structure and type
definitions for handling connections.
* tsmConnection_dpss.c: [new file] manages DPSS connections
(tsmConnect_dpss): create a TsmConnection structure for an http
dataset. Reads tspec file if available, opens up the DSM and DPSS
connections, starts reader/writer streams, and supports Connection
Params (see above).
(tsmDisconnect_dpss): disconnects from a DPSS dataset: closes
connections to the DSM, DPSS, frees tile request list, etc.
(tsmReadTspec_dpss): read a tspec file for a DPSS dataset.
(tsmReadEmbeddedTspec_dpss): read a tspec file that is embedded in
the dataset on a DPSS.
(tsmGetSetId): works out the set ID for a DPSS pyramid, and
supports Connection Params (see above).
* tsmConnection_web.c: [new file] manages connections over http
(tsmConnect_web): create a TsmConnection structure for an http
dataset. Reads tspec file if available, and supports Connection
Params (see above).
(tsmReadTspec_web): read a tspec file over an http link
* tsmConnection_local.c: [new file] manages local disk connections
(tsmConnect_local): create a TsmConnection structure for a local
disk dataset. Reads tspec file if available, and supports
Connection Params (see above).
(tsmReadTspec_local): read a local disk tspec file
* tsmTile.c: [new file] tile I/O routines for connection interface
(tsmReadTile): reads a single tile from a connection
(tsmReadNextTile): reads the next tile sent to us for a particular
connection (requires building/sending a tile request list)
(tsmTileReqBegin): being a new tile request list for a connection
(tsmTileReqAdd): add a new tile request to the request list
(tsmTileReqEnd): finish the request list and send to server
(tsmAreTilesTIFF): check if the tiles for a connection are stored
in TIFF format
(tsmWriteTile): write a single tile to a dataset
* tsmTile_dpss.c: [new file] DPSS tile I/O routines for connections
(tsmSendRequestListToDPSS): send a tile request list to DPSS
(tsmReadNextTile_dpss): read the next tile sent from the DPSS
(tsmWriteTile_dpss): write a single tile to a DPSS
* tsmTile_local.c: [new file] local disk tile I/O routines
(tsmReadNextTile_local): read the next tile from local disk
(tsmReadTIFF): read a tile from a Tagged TIFF format file
(tsmWriteTile_local): write a single tile to local disk
(tsmWriteTIFF_local): write a tile to a Tagged TIFF format file
(tsmAreTilesTIFF_local): check to see if local disk tiles are in
TIFF format
* tsmTile_web.c: [new file] routines to perform tile I/O for a
connection over an http link - currently nothing there.
* tsmImage.c: [new file] contains image manipulation functions.
(tsmSaveImage): a routine to write out a tile buffer to a file on
disk in a number of different formats (specified as a parameter).
Currently supported formats are: ppm, jfif, gif.
(tsmSaveImagePPM): a routine to write out a tile
buffer to a PPM file.
(tsmSaveImageJFIF): a routine to write out a tile buffer to a
JPEG/JFIF file.
* tsmImage.h: [new file] contains definitions for tsmImage.c,
including an enum for all the available output image format.
Thu Jan 8 09:42:06 1998 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmPurl.c: made creation of http->file uri string more
robust. It was writing beyond the end of the allocated memory
causing TV to bomb out whenever accessing DPSS datasets.
Fri Dec 19 10:38:00 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmAllocTspecs.c (tsmFreePyramid): free the rectification grid
Purl if it has been allocated
* tsmDatabase.c (tsmUpdateDatabaseFromServer): if a pyramid tspec
has a footprint defined then use that, otherwise try to calculate
one from the projection matrices that we have.
* TsTileSpecParse.c (tspParseTspecLine): extended tspec parser to
read in [latlong|utm|geo]-footprint fields as well as the
rectification fields.
* TsTileSpecOut.c (tspSaveRectificationTspec_fp): new func. writes
out the rectification information to a tspec file.
* TsTileSpecDecs.x: add fields to the Pyramid structure:
rectification, rectificationGrid, and footprint.
* tsmDatabase.h: added a Footprint structure which can hold a
footprint in UTM, Lat/Long, or Geocentric coordinates. TsmDataset
now uses this general structure rather than explicitly listing
each supported coordinate system.
* tsmDatabase_local.c (tsmParseDatabaseLine): added parse routine
to read in a geocentric footprint (geo-footprint). Also, we no
longer convert UTM to Lat/Long when reading UTM footprint and vice
versa - only one coordinate system is valid at any point.
Wed Dec 17 17:18:01 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.h: renamed GeoCoord and GeoFootprint to LatLongCoord
and LatLongFootprint, and introduced two new structures called
GeoCoord and GeoFootprint for geocentric coordinates (x,y,z).
* tsmDatabase.c (tsmCalcFootprintFromXform): if we try to add an
lvcs dataset to the database, then we work out its geocentric
footprint via the (ix,iy) -> (u,v) -> lvcs -> geocentric transform.
Tue Dec 16 10:40:56 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmPurl.c (tsmParseUrl): improved the check for whether an http
or file URL can be converted to a file://localhost URL. If the
host and localhost domain names are the same but the machine names
are different, then maybe we can access the file over NFS, so we
stat the file and set URL to file://localhost if this works. If
the host and localhost names match exactly, no stat is needed.
* tsmHost.c (tsmIsLocalHost): now also checks to see if the domain
name part of the two hostnames are the same, e.g. so that we can
match two hosts such as "lomond.ai.sri.com" and "www.ai.sri.com".
Return code = 1 (full match), 2 (domain match), 0 (no match).
* TsTileSpecGen.c (tspCreatePyramidUTM): removed the upper-right
UTM coord params (redundant with res & pixel dimensions), and
added a parameter for the source_type;
Mon Dec 15 12:03:53 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDatabase.h: new file. Data structs for dataset database.
* tsmDatabase.c: new file. High-level database maintenance funcs.
(tsmReadDatabase): new func. parse a database file into a database
structure
(tsmWriteDatabase): new func. write out a database structure to a
database file
(tsmAddDataSetToDatabase): new func. adds all dataset instances to
a database if they are not already there
(tsmRemoveServerSetsFromDatabase): new func. removes all instances
from a database that exist on the specified server
(tsmUpdateDatabaseFromServer): new func. contact the specified
server and update the database with all of the instances that
the server holds information on.
(tsmAddServerToDatabase): new func. add a server to a database
(tsmRemoveServerFromDatabase): new func. remove a server from a
database
(tsmCalcFootprintFromXform): new func. calculates the footprint
entry of a dataset from a pyramid's tspec structure
(tsmMakeDataSetInst): new func. allocates a new dataset instance
(tsmFreeDataSetInst): new func. frees a dataset instance
(tsmMakeDataSet): new func. allocates a new dataset
(tsmFreeDataSetContents): new func. frees the contents of a
dataset
(tsmFreeDataSet): new func. frees a dataset
(tsmFreeServer): new func. frees a server
(tsmPrintDataSet): new func. outputs formatted dataset contents
(tsmPrintServer): new func. outputs formatted server contents
(tsmMakeDatabase): new func. allocates a new database
(tsmFreeDatabase): new func. frees a database
(tsmPrintDatabase): new func. outputs a formatted database
* tsmDatabase_local.c: new file. Routines to read and write local
database files.
(tsmParseDatabaseLine): new func. parses a single line from a
database file into a database structure
(tsmReadDatabase_local): new func. parses an entire local disk
database file into a database structure
(tsmWriteDatabase_local): new func. writes out a database
structure to a file on local disk
(tsmNewDataSetInstance): new func. grow a dataset's instance array
(tsmDeleteDataSetInstance): new func. delete an entry in a
dataset's instance array
(tsmNewDatabaseDataSet): new func. grow a database's dataset array
(tsmDeleteDatabaseDataSet): new func. delete an entry in a
database's dataset array
(tsmNewDatabaseServer): new func. grow a database's server array
(tsmDeleteDatabaseServer): new func. delete an entry in a
database's server array
Sat Dec 13 13:08:10 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecOut.c (tspSaveCoordTspec_fp): increased precision with
which the equatorial and polar radii values are written to tspec
(they're doubles but were being written out only to float precis.)
* TsTileSpecUtils.c (tspPrintFloatVector): increased precision with
which float arrays are written, e.g. the uv-ixiy matrices in the
tspec were getting rounded off more than they need to be.
* TsTileSpecParse.c (tspParseTspecLine): changed tspec file parser
to use a hash key based upon the first 3 letters of a keyword,
then use strcmp's only after that. This is much more efficient
than using a list of if/elseif's.
(tspIsToken): removed function - obsoleted by hashed keyword lookup
* TsTileSpecUtils.c (tspOpenForWrite): fixed the warning messages
that were caused by the tspFileStart+1 and tspFileEnd-1 lines.
Fri Dec 12 09:25:52 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDecs.h: added an imageFormat field to the ServerGroup struct
* tsmTopIO_iss.c (tsmGetPyramidInfo_dsm): fill in the image format
field of each DPSS ServerGroup.
* tsmTileIO_web.c (tsmIsTIFFPresent_web): new function. checks to
see if a TIFF file exists at the end of an HTTP URL.
* tsmTileIO.c (tsmIsTIFFPresent): now handles HTTP URLs as well as
local disk URLs.
* TsTileSpecUtils.c (tsmLFToSpace): new function. Converts any \n
chars in a string to spaces - needed to enforce that any user
input strings for the tspec file stay on one line.
* TsTileSpecOut.c (tspSaveSimpleTspec): using tsmLFToSpace, ensure
that the description field stays on one line of the tspec file
(tspSavePyramidTspec_fp): ditto
(tspSaveTerraFormRectangularAreaTspec): ditto
(tspSaveRectangularORGATspec): ditto
(tspSaveIdentityTspec_fp): ditto, for name, operation-done-by,
operation-date, and source-type fields
* TsTileSpecParse.c (tspParseTspecLine): new tspec parse routine
didn't look for image-hierarchy-* fields. Added these. Also added
the new source-type field.
Thu Dec 11 13:47:06 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecOut.c (tspSaveIdentityTspec_fp): write out source_type
field, using "unknown" if not specified.
* TsTileSpecDecs.x: added a source_type field to IdentityTspec.
Wed Dec 10 15:17:06 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmDateString): new function. Returns a date string
for the current time/date, or for a specific time_t value.
Tue Dec 9 10:03:39 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecParse.c (tspExtractTokenAndData): skip over any
initial whitespace before a database/tspec keyword.
(tspReadLineFromTspec): check that an entire line is empty (spaces
or tabs) before discarding it, rather than just checking to see if
the first char is a space
* tsmDecs.h: moved MAX_TSPEC_LINE_LENGTH from TsTileSpecParse.c so
that the database reading routine can see the value.
Mon Dec 8 14:43:46 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmPurlDefns.x: include the rpc/xdr.h header in the .h file
Thu Dec 4 13:51:04 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO_iss.c (tsmGetPyramid_dsm): check that the set that we
open is actually a Pyramid. If not, then return with an error
(tsmGetGeoPyramid_dsm): check that the set that we open is
actually a GeoPyramid. If not, then return with an error
* tsmTopIO.c (tsmGetPyramid): added tsmISS to the protocol
switch. Previously you couldn't call tsmOpen with a DPSS URL, e.g.
x-iss://iss-1-atm.sri.magic.net/Pyramids/ntc-1-utm-2scene.128.oi.
(tsmGetGeoPyramid): added tsmISS to the protocol switch here also.
(tsmGetPyramidBasePurl): Previously you could not call tsmOpen()
with a DSM URL and then just pass a set number as the pyramid name
for tsmGetPyramid. This will work now - tsmGetPyramidBasePurl will
check to see if the pyramid name is a number, and if so it will
create a full x-dsm://host/Pyramids/set-no URL for it.
(tsmGetGeoPyramid): same again - allow just a set number to
specify the GeoPyramid if we already know the DSM host to use.
* tsmTopIO_iss.c (tsmEnsureDSMOpen): new function. Checks to see
if both tsmInit_dsm and tsmOpen_dsm have been called, and also to
set the dbPurl correctly if necessary.
(tsmGetPyramid_dsm): use tsmEnsureDSMOpen to make sure that
tsmh->issInt has been allocated. This might not be the case if we
called tsmOpen() with no URL and then called tsmGetPyramid().
(tsmGetGeoPyramid_dsm): same again - use tsmEnsureDSMOpen() to
ensure that tsm->issInt has been allocated before using it.
1997-12-04 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmIntDecs.h: Include <pthr/trace.h> for tracing.
* tsmTrace.h.in: Ditto.
* configure.in: Change checks for pthread.h and pthr/trace.h to
reflect split in directories.
Wed Dec 3 15:46:55 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO_local.c (tsmReadNameUrlIds): [Geo]PyramidUrls can now
contain empty string locations, i.e. "" as well as " ". Also, if
there is more than one location specified on a line, we don't
barf. Just take the first one. This allows us to read future
[Geo]PyramidUrls files, potentially containing multiple URLs for a
pyramid. Updated all error reporting to use tsmError. Explicitly
check for EOF during read and give a more useful error message.
* tsmPurl.c (tsmFilenameToUrl): strip leading spaces from local
filenames (previously done for URLs, but not for local filenames)
(tsmParseUrl): strip trailing spaces from URLs (and local
filenames). Also, skip any spaces between the protocol string and
the hostname.
Tue Dec 2 11:50:16 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDPSSLoad.c (tsmLoadTspecOnDPSS): finished the tspec to DPSS
loading routine. All works fine now with the latest DPSS 2.4.4
patches (dated 2 Dec 1997 or later).
* tsmTopIO_iss.c (tsmReadTspecFromDPSS): finished the tspec from
DPSS routine.
(tsmGetPyramid_dsm): if a DPSS pyramid has no metadata (tspec)
URLs associated with it (or if they don't work), then we try to
read the tspec file from the DPSS itself.
* tsmTspecUtils.h: changed name of TSM_TSPEC_BLOCK_KEY inline with
the DPSS define name (TSPEC_BLOCK_KEY). Only defined if not
already.
Mon Dec 1 10:18:55 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmPurl.c (tsmParseUrl): correctly expand the "/~user" part of a
URL. Looks up the passwd file entry for the account to get the
full pathname to use, instead of assuming /homedir/user. Needed to
do this because the TIOC use /usr/people and not /homedir.
(tsmFilenameToUrl): moved from tsmTileGen.c. Extended to now
handle filenames beginning with "~user/" or "~/", as well as
"file://localhost/~user", and correctly expand these cases as
described above.
* tsmDPSSLoad.c (tsmEnsureDPSSOpen): create the dbPurl for a DPSS
database as an x-dsm: URL, not an x-iss: URL.
Wed Nov 26 12:16:53 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmIntProts.h: add prototypes for tsmDPSSLoad.c internal funcs
* tsmAllocTspecs.c (tsmCopyPyramid): robustified pyramid copy
routine - don't attempt to copy the tspecLevel array if none has
been allocated.
* tsmTileIO_iss.c (tsmGetNextTileData_iss): test for whether an
incoming DPSS tile is raw/jpeg was wrong. Should check for
specific size, not <= size (because DEMs are smaller than JPEG
compressed OIs currently).
* tsmTileIO_local.c (tsmGetTile_local): don't try to look for JPEG
versions of DEMs if the DEM isn't stored in TIFF format - instead,
use the .tile format data for DEMs. This is a bug that crept in as
a result of supporting local OI pyramids containing only JPEG data.
1997-11-26 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmUtils.c (pthr_trace_intArray): Reconstruct to use
pthr_trace(). Much safer this way.
* configure.in (AC_FUNC_ALLOCA): Check for alloca().
(RPATH): Check more carefully for existence of potential RPATH
directories.
* tsmInt.h: Add initialization to allow use of alloca().
Tue Nov 25 15:35:30 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDPSSLoad.c (tsmUpdateBlockTable): DPSS continuation loads
work now!!! Included the relevant db_cursor routines required for
the DPSS 2.4.4 updates and all works great now.
* TsTileSpecParse.c (tspParseTspecLine): parsing routine for new
tspecs was looking for inverseFocalLength field, instead of
inverse-focal-length.
* tsmTopIO_iss.c (tsmGetGeoPyramid_dsm): as with DPSS pyramids,
previously we only took the very first metadata (tspec) URL and
tried that - if it failed then you were SOL. Now we try all of the
metadata URLs associated with a GeoPyramid until we find one that
works. If we have to try another metadata URL then we output a
message to state this and show the next URL being tried.
(tsmGetPyramid_dsm): if we have to try another metadata URL then
output a message to state this and the next URL being tried.
* tsmTileIO_local.c (tsmGetTile_local): if there is not a TIFF
file in the image format requested, then check to see if there is
a TIFF in another format and use that one if found (also, set this
to be the default image format to use thereafter). This means that
we can now read a pyramid which only has, say, JPEG TIFFs even
though we tsmSetReadTileFormat( tspLrbtRaster ).
1997-11-25 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in: Check carefully whether to augment search with
$prefix/include and $exec_prefix/lib.
* tsmDPSSLoad.c (tsmGetExistingBlockMap): Reverse check to use
DPSS_CONT_LOAD.
(tsmUpdateBlockTable): Ditto.
* configure.in (AC_CHECK_FUNCS(iss_db_get_next_block)): Robustify
checking for DPSS_CONT_LOAD and reversed sense from
NO_DPSS_CONT_LOAD.
1997-11-24 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTopIO_iss.c (tsmReadTspecFromDPSS): Moved from
tsmDPSSLoad.c. Isolates DPSS upload functions completely.
Mon Nov 24 12:43:45 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDPSSLoad.c (tsmUpdateBlockTable): conditionally implement
function body only if DPSS continuation support available.
(tsmGetExistingBlockMap): ditto
* configure.in (NO_DPSS_CONT_LOAD): added check to see if func
exists in DPSS includes, and also that it has enough parameters, to
enable continuation loads to a DPSS. Set a define in config.h if
functionality not available. (iss_db_get_next_block doesn't exist
in Irix5.3 DPSS libs and the param count changed in a recent 2.4.4
patch.)
* TsTileSpecGen.c (tspCreatePyramidUTM): added extra parameter to
specify UTM zone of mosaic being created. Updated projection.tspec
calculations to calculate the geoid-sep value correctly (needed to
convert UTM to Lat/Long).
* tile-sets.html: removed file. Obsoleted by new web pages.
* tsm-api.html: removed file. Obsoleted by new web pages.
* tsm-database.html: removed file. Obsoleted by new web pages.
* tsm-sources.html: removed file. Obsoleted by new web pages.
1997-11-21 Lee Iverson <leei@Canada.AI.SRI.COM>
* configure.in (AC_ARG_WITH(dpss)): Reconstruct so that we don't
need to specify a DPSS version. Determined automatically.
(AC_CHECK_FUNCS(issGetInternalVersInfo)): Determine method to
obtain library version.
(AC_CHECK_LIB(jpeg)): Now need to verify existence of jpge library.
Check that $prefix is a directory before using it.
* tsmTrace.c (tsmPrintReleaseInfo): Dependent on
HAVE_ISSGETINTERNALVERSINFO.
Thu Nov 20 14:28:31 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUTM.c: new file. contains routines to convert between
lat/long and UTM coordinate systems (and vice versa). Functions in
question are: tsmGeoToUTM() and tsmUTMToGeo(). Based upon source
code from the DMAMUSE package.
Thu Nov 20 14:28:31 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* configure.in: removed -lvideo from DPSS 2.4.4 linker line
* tsmDPSSLoad.c: new file. Put all DPSS loading routines here so
that they don't get linked if you don't use them - this caused a
problem with the Irix 5.3 DPSS 2.4.3 libs which didn't have some
functions compiled in.
Wed Nov 19 10:51:19 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO_iss.c (tsmLoadGeoPyramidToDPSS): new function. Will
write out a GeoPyramid set to a DPSS.
* tsmPurl.c (tsmParseUrl): if the URL to parse is stdin/out/err,
then make the uri field (e.g.) "stdout", not "/stdout". This now
makes things like tsmPutPyramid() with "stdout" work correctly
again.
* tsmTileGen.c (tsmFilenameToUrl): if filename is "stdout",
"stdin", or "stderr", then don't prepend the current directory to
make an absolute pathname.
Tue Nov 18 20:27:52 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO_local.c (tsmWriteNameUrlIds): when writing the
PyramidUrls and GeoPyramidsUrls databases, use an empty string for
each location where the directory of the Pyramid/GeoPyramid is the
same as the directory of the database file.
Fri Nov 14 09:29:34 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmUtils.c (tsmInverse3x3): if you had really large resolution
values (e.g. 16384), then you would loose precision on the inverse
of the image tranform matrix. Now we do all internal manipulations
using doubles instead of floats to solve the problem.
(tsmDet3x3): calculate the determinant as a double
(tsmDet2x2): calculate the determinant as a double
* TsTileSpecOut.c (tspSaveTspec): tried to write out the
image-transformation tspec for .val[0]! should be minLevel, not 0,
with the new offset array stuff. Problem showed up for DEMs only.
Wed Nov 12 17:20:34 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO_iss.c (tsmLoadTspecOnDPSS): new function. Will write
out a pyramid's tspec file to a DPSS.
1997-11-12 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmUtils.c (tsmElapsedTime): Simplify.
1997-11-11 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (pkginclude_HEADERS): Moved gd*.h sih*.h ezio.h and
xv.h to EXTRA_HEADERS. Thus not installed to include/tsm
* tsm.h: Remove reference to sih.h
* tsmDecs.h: Remove reference to sihDecs.h.
Tue Nov 11 09:17:47 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTileIO_iss.c (tsmGetNextTileData_iss): now supports reading
and decompression of JPEG tiles on a DPSS - N.B. there is no
compression info in the TileHeader so we currently use the tile
size as a way of deciding beforehand if the tile data has been
JPEG compressed - not good, should have compression info in
TileHeader.
* tsmTopIO_iss.c (tsmGetPyramid_dsm): previously we only took the
very first metadata (tspec) URL and tried that - if it failed then
you were SOL. Now we try all of the metadata URLs associated with
a set until we find one that works.
(tsmGetPyramidInfo_dsm): now also fills in the metadata fields of
the PyramidInfo structure.
Fri Nov 7 11:13:17 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmImageUtils.c (tsmRgbBufferToGifFile): added a (char *) cast
to the rgb_image_to_gif_file() call to stop a warning message.
* tsmTileGen.c (tsmDem2Tile): routine didn't fill the
pyramid->tileTspec structure with any values (just the tspecLevel
TileTspecs) and so tsmPutTile got confused - don't know how this
managed to work before.
(tsmImg2Tile): same as for tsmDem2Tile.
* tsmTileIO_local.c (tsmGetLocalTileFromTIFF): updated the local
disk version of tsmGetTile to use the new JPEG decompression
routine (see below) - get's rid of a flip operation on the tile.
* tsmTileGen.c (tsmDem2Tile): a DEM image is now always written
out in the old .tile format (TIFF not applicable as VRML will
eventually be used).
* TsTileSpecOut.c (tspSaveTileTspec_fp): total-num-pixels-per-tile
fields are no longer written out to the tspec file - not necessary
as can be computed from numPixels and overlap.
* tsmAllocTspecs.c (tsmFillSimpleTileSets): totalPixels[n] values
now calculated explicitly from numPixels{X|Y} + overlap[n] for
all TileTspecs in a pyramid.
* tsmJPEG.c: New file (JPEG compress/decompress TV tiles)
(tsmJPEGCompressTile): JPEG compress an lrbt tile in memory
(tsmJPEGDecompressTile): Decompress a JPEG tile to lrbt format
* tsmTopIO_iss.c (tsmPrepareDPSSPyramid): Prepare a DPSS for writing
out tiles to a pyramid - first step in loading tiles to DPSS
(tsmLoadTileOnDPSS): Write a single tile to a DPSS pyramid
(tsmFinishDPSSLoad): Tell the DPSS and DSM that a load has finished
(tsmGetPyramidSetId): Finds a pyramid's set ID (finds unique
pyramid name/server group combination).
Tue Nov 4 10:04:53 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* Makefile.am (lib_LIBRARIES): added tsmDecs.c to list of sources
* tsmDecs.c: New file (API interface to data structures in tsmDecs.h)
(tsmSetPyramidInfoName): Copy a name into the PyramidInfo structure.
(tsmSetPyramidInfoPyramid): Add a Pyramid into the PyramidInfo
structure
(tsmSetPyramidInfoSetId): Sets the set ID for a server group in a
PyramidInfo
(tsmSetPyramidInfoMaster): Sets the master host name for a server
group in a PyramidInfo
(tsmAddPyramidInfoServer): Adds a server host name to a server
group in a PyramidInfo
(tsmAddPyramidInfoMetaData): Adds a metadata location to a server
group in a PyramidInfo
(tsmMakePyramidInfo): Allocate a PyramidInfo structure
(tsmFreePyramidInfo): Free a PyramidInfo structure
(tsmSetServerGroupId): Sets the set ID for a server group
(tsmSetServerGroupMaster): Sets master host name for a server group
(tsmAddServerGroupServer): Adds a server host name to a server group
(tsmAddServerGroupMetaData): Adds a metadata URL to a server group
(tsmGrowPyramidInfoServerArray): Free the contents of a ServerGroup
(tsmPrintServerGroup): Moved from tsmTopIO.c
(tsmPrintPyramidInfo): Moved from tsmTopIO.c
(tsmPrintPyramidInfos): Moved from tsmTopIO.c
(tsmPrintGeoPyramidInfo): Moved from tsmTopIO.c
Mon Nov 3 11:00:39 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO.c (tsmPrintPyramidInfo): updated routine to display
metadata locations.
Thu Oct 30 10:32:30 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmDecs.h: updated the definition of ServerGroup to hold an
array of metadata urls that the DPSS uses to point to tspecs.
* tsmChecksum.c (tsmSetPyramidChecksum): (new func) takes a
checksum array and copies it into the lrbt or jpeg checksum array
of a pyramid.
* tsmTileGen.c (tsmImg2Tile): added an imgFormat parameter in
order to specify the generation of lrbt or jpeg tiles (was
hardcoded to lrbt before)
(tsmDem2Tile): ditto
Tue Oct 28 16:54:25 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* xv.h: removed trailing comma in enumerator list,
Conversion. Caused a warning with gcc.
(RANGE): added previously removed #define - needed by xv24to8.c
* rgb_image_to_gif.c: declared noqcheck and conv24 to be externs
(already defined by xv24to8.c). Removed unused variable, cmd.
1997-10-28 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile.am (libtsmApi_a_SOURCES): Remove reference to
xvmisc2.c.
* TsTileSpecIn.c (tspReadOldPyramid): Call
tsmOffsetArrayCallocRange() with minLevel and maxLevel to
allocate tspecLevel.
* configure.in (AC_C_INLINE): Add call and subsequent test to
define HAVE_INLINE.
(AC_CHECK_LIB(Csup)): Add library at end when needed.
* gd.c (gdCompareInt): Arguments made compatible with qsort().
* gd.h (rgb_image_to_gif_file): image is now properly declared as
an `unsigned char *'.
* rgb_image_to_gif.c (rgb_image_to_gif_file): Change image24 to
take `byte 8' and change call to Conv24to8() to reflect change
in prototype.
* tsmAllocTspecs.c (tsmMakeSimpleTileSetArray): Call
tsmOffsetArrayCallocRange() with minLevel, maxLevel instead of
offset and length.
(tsmMakeChecksum): Call tsmOffsetArrayMallocRange() with
minLevel and maxLevel+1.
* tsmGenArray.h (tsmOffsetArrayMallocRange): Add call which takes
min and max indices instead of offset and length.
(tsmOffsetArrayCallocRange): Ditto.
* tsmInt.h: #include "config.h" moved to start and protected with
HAVE_CONFIG_H.
* tsmTileIO_web.c (tsmGetTile_web): Cast tileBuffer to `char *'
for call to tsmHttpUrlToBuffer().
* tsmUtils.c (tsmCopyPyramidLevelToBinaryStream): tileBuffers and
position are `unsigned char *'.
* xv.h: Prototype functions and remove dependencies on xv and X11.
* xvmisc2.c: Remove file. No longer needed.
* xv24to8.c (Conv24to8): Change arguments so that caller provides
pointer to destination image. Now returns TRUE for success.
(All functions): Prototype and remove xv dependency.
Wed Oct 22 11:50:07 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTileIO.c (tsmNumBytesPerTile): use pyramid->tileTspec for the
calc, not pyramid->tspecLevel.val[pyramid->minLevel].tileTspec
Tue Oct 21 10:25:11 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmChecksum.c (tsmCalcChecksum): rearranged the order of
checksum values in the checksum array so that the whole pyramid
checksum is given at the end of the array (maxLevel+1).
* tsmAllocTspecs.c (tsmMakeChecksum): checksum array
initialisation was hardcoded to offset being 0. Sorted now.
* TsTileSpecIn.c (tspReadOldPyramid): Gotcha! Call to
tsmOffsetArrayCalloc had incorrect parameters (min/max instead of
len/off) - caused no end of havoc later on! All peachy again now.
* tsmTopIO.c: Added/updated comments for all external functions
using Doc++ format to allow automatic generation of API docs.
* tsmTileIO.c: ditto
* tsmTileIO_local.c: ditto
Fri Oct 17 17:17:49 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* configure.in (AC_PATH_PROG(AR)): Search in /usr/ccs/bin under
Solaris.
(AC_CHECK_FUNC(xdr_int)): Sometimes need to link -lnsl for RPC
calls.
(AC_CHECK_LIB(tiff)): Revamp checking for -ltiff. May need to
add a version test.
(AC_PATH_XTRA): Remove.
* tsmChecksum.c (tsmChecksumPyramidLevel): Use server number 0
throughout.
* tsmExtProts.h: Reflect changes in tsm{Get,Put}Tile*() arguments.
* tsmGenArray.h (tsmArrayCalloc): New macro.
* tsmTileIO.c (tsmGetTile): Now takes mandatory numServer
argument. No longer varargs.
(tsmPutTile): Now takes mandatory imgFormat argument. No longer
varargs.
(tsmCheckSumTile): Call tsmGetTile() with numServer argument.
(tsmGetNextTile): Now takes mandatory numServer argument.
Passes on to tsmGetNextTileHeader() and tsmGetNextTileData().
(tsmGetNextTileHeader): Now takes mandatory numServer argument.
No longer varargs.
(tsmGetNextTileData): Now takes mandatory numServer argument.
No longer varargs.
* tsmTopIO_web.c (tsmLoadGeoPyramidDatabase_web): Remove
tmpPathName after use.
(tsmLoadPyramidDatabase_web): Ditto.
(tsmGetGeoPyramid_web): Ditto.
(tsmGetPyramid_web): Ditto.
(tsmReadCoordTspec_web): Ditto.
(tsmReadIdentityTspec_web): Ditto.
(tsmReadImageTransformationTspec_web): Ditto.
(tsmReadPixelTspec_web): Ditto.
(tsmReadProjectionTspec_web): Ditto.
(tsmReadSimpleTspec_web): Ditto.
(tsmReadTileTspec_web): Ditto.
Wed Oct 15 11:23:50 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecUtils.c (tspCalcGeoidSeparation): converted ffloor()
functions to floor() for compatibility with non-SGI platforms
(tspCalcUTMZone): converted ffloor() function to floor() for
compatibility with non-SGI platforms
Fri Oct 10 17:01:24 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* tsmGenArray.h (tsmArrayCalloc): New macro.
* configure.in (AC_PATH_XTRA): Redo X11 configuration so that
should work on systems with non-standard installations.
Fri Oct 10 10:11:41 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmGenArray.h (tsmOffsetArrayCalloc): added a calloc routine for
the offset array support
* TsTileSpecIn.c (tspReadOldPyramid): changed array allocation
from tsmOffsetArrayMalloc to tsmOffsetArrayCalloc - the fields of
these structures should be initialised to zero.
* tsmAllocTspecs.c (tsmMakeSimpleTileSetArray): changed array
allocation from tsmOffsetArrayMalloc to tsmOffsetArrayCalloc -
the fields of these structures should be initialised to zero.
* TsTileSpecOut.c (tspSaveIdentityTspec_fp): removed "[<lev>]="
prefix to each checksum value - not necessary for tspec file,
however added this functionality to checksum.c tsmUtils program.
* tsmAllocTspecs.c (tsmMakeChecksum): len and offset values were
not calculated correctly for the tsmChecksumArray - minLevel was
used for array length, which resulted in zero-length arrays.
* tsmChecksum.c (tsmCalcChecksum): updated function to work on a
tsmChecksumArray rather than an int list.
* tsmDecs.h (TSM_GAUSSIAN_FILTER & TSM_POINT_SAMPLE): moved
#defines from tsmIntDecs.h to tsmDecs.h to make external
Thu Oct 9 16:35:25 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTileIO.c (tsmPutTile): use the tsmUseNewTileFlag flag to decided
to write .tiff or .tiles. Function now only accepts one optional
arg - the image format of the tile (default = lrbt)
(tsmGetTile): no optional argument anymore to specify which image
format to read. This is now controlled by the tsmReadTileFormat
flag
(tsmSetUseNewTileFlag): set value of the tsmUseNewTileFlag flag
(tsmGetUseNewTileFlag): get value of the tsmUseNewTileFlag flag
(tsmSetReadTileFormat): set the value of tsmReadTileFormat flag
(tsmGetReadTileFormat): get the value of tsmReadTileFormat flag
(tsmGetGetTileFlag): get value of the tsmGetTileFlag
(tsmGetNextTile): removed the imgFormat parameter - now uses the
value of tsmReadTileFormat instead
(tsmGetNextTileHeader): removed the imgFormat parameter - now uses the
value of tsmReadTileFormat instead
(tsmGetNextTileData): removed the imgFormat parameter - now uses the
value of tsmReadTileFormat instead
* tsmTileGen.c (tsmImg2Tile): updated call to tsmPutTile() to
remove the parameter defining the tile format to use
(tsmDem2Tile): updated call to tsmPutTile() to remove the
parameter defining the tile format to use
* tsmUtils.c (tsmCopyPyramidLevelToBinaryStream): updated calls to
tsmGetNextTileHeader & tsmGetNextTileData to remove imgformat param
* tsmIntDecs.h (TSM_TILE_FILE & TSM_TIFF_FILE): #defines removed
Fri Oct 3 15:34:45 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* Release 0.13.
* tsmTrace.h.in: New file. Source for tsmTrace.h
* tsmIntDecs.h: New file. Contains internal definitions of
externally opaque structures.
* configure.in (PTHR_TRACE): This is now used to substitute into
tsmTrace.h from tsmTrace.h.in to indicate whether tsmApi was
configured with libpthrutil tracing and reporting functions or
not. This way, tsmTrace.h can be externally visible without
containing local configuration information.
* tsmDecs.h: Move externally opaque structures to tsmIntDecs.h,
retaining typedef references here (e.g. TsmHandle).
* tsmExtProts.h: Add external definition for tsmNumServers().
* tsmInt.h: Restructure to access "tsmIntDecs.h", which now
contains definitions of externally visible, but opaque
structures.
* tsmTopIO.c (tsmNumServers): New function provided to that
external routines can query opaque TsmHandle object.
* tsmTrace.c (tsmError): Provide alternate definition when
pthrutil library is not available.
(tsmStatus): Ditto.
* tsmUtils.c (tsmCopyPyramidLevelToBinaryStream): Provide tile
type arguments to tsmGetNetTile{Header,Data}().
* update_release.pl: Fix to ensure that release changes are
committed before tags are applied.
Wed Oct 1 12:08:26 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* configure.in (TSMLIB): Define as derived from $TSMNAME and use
as AC_SUBST() argument.
(AC_CHECK_FUNCS): Add strtod() and strtol().
* Makefile.am (TsTileSpecDecs.h): Add rule to automatically create
from TsTileSpecDecs.x.
(TsTileSpecDecs_xdr.c): Ditto.
(tsmPurlDefns.h): Ditto.
(tsmPurlDefns_xdr.c): Ditto.
* tsm.h (pow2): Define macro for integer 2^x.
(scale2): Define macro for integer x*2^y.
* tsmGenArray.h (tsmOffsetArray): New macro. Defines an offset
array type.
(tsmOffsetArrayMalloc): New macro. Mallocs memory and offsets
array.
(tsmOffsetArrayDup): New macro. Duplicates tsmOffsetArray.
(tsmOffsetArrayFree): New macro. Frees tsmOffsetArray.
(declare_xdr_tsmOffsetArray): New macro. Creates declaration for
xdr function to read/write tsmOffsetArray.
(define_xdr_tsmOffsetArray): New macro. Defines xdr function to
read/write tsmOffsetArray.
(tsmArray): New macro. Defines an array type.
(tsmArrayMalloc): New macro. Mallocs memory for tsmArray.
(tsmArrayDup): New macro. Duplicates tsmArray.
(tsmArrayFree): New macro. Frees tsmArray.
(declare_xdr_tsmArray): New macro. Creates declaration for
xdr function to read/write tsmArray.
(define_xdr_tsmArray): New macro. Defines xdr function to
read/write tsmArray.
* tsmAllocTspecs.c (tsmFreeIdentityTspecContents): Properly free
arrays using tsmArrayFree() and tsmOffsetArrayFree() macros.
(tsmFreePyramid): Call tsmFreeSimpleTileSetArray() with array
pointer argument.
(tsmCopySimpleTileSet): Use tsmOffsetArrayDup() and
tsmArrayDup() to copy arrays.
(tsmCopyPyramid): Ditto.
(tsmMakeSimpleTileSetArray): Change arguments to take
SimpleTileSetArray pointer and minLevel, maxLevel pair.
(tsmFreeSimpleTileSetArray): Change arguments to take
SimpleTileSetArray pointer.
(tsmEnlargeSimpleTileSetArray): Change arguments to take
SimpleTileSetArray pointer. Properly manages resizing of
tsmOffsetArray.
(tsmAllocatePyramid): Change function so that arrays are
allocated offset against minLevel. Now takes minLevel and
maxLevel arguments instead of numLevels.
(tsmFillSimpleTileSets): Convert array references to .len and
.val instead of .foo_len and .foo_val.
(tsmMakeChecksum): Change arguments to take tsmChecksumArray
pointer and minLevel, maxLevel pair.
* tsmExtProts.h (tsmAllocatePyramid): Prototype for new arguments.
(tsmMakeSimpleTileSetArray): Prototype for new arguments.
(tsmEnlargeSimpleTileSetArray): Prototype for new arguments.
(tsmFreeSimpleTileSetArray): Prototype for new arguments.
(tsmMakeChecksum): Prototype for new arguments.
* TsTileSpecDecs.x: Convert all array references to tsmArray or
tsmOffsetArray references. Replaces rpcgen-generated
foo.foo_len references with foo.len.
* TsTileSpecGen.c (tspCreatePyramidUTM): Change array allocation
calls to tsmArray and tsmOffsetArray macros.
Use new versions of tsmAllocatePyramid() and tsmMakeChecksum().
* TsTileSpecIn.c (tspReadPyramids): Convert array references to
.len and .val instead of .foo_len and .foo_val.
(tspReadGeoPyramid): Ditto and use tsmArrayMalloc() for arrays.
(tspReadMultiImageTileSet): Ditto.
(tspReadOldPyramid): Ditto.
(tspReadIdentityTspec1): Ditto.
* TsTileSpecOut.c (ftoa): Remove function.
(tspSaveIdentityTspec_fp): Convert array references to .len and
.val instead of .foo_len and .foo_val.
(tspSavePixelTspec_fp): Ditto and use format arg %g instead of
%s of ftoa().
(tspSaveProjectionTspec_fp): Ditto.
(tspSaveCoordTspec_fp): Ditto.
(tspSaveAllSimpleTspecs_fp): Ditto.
(tspSaveTspec): Ditto.
(tspSaveMultiImageTspec): Ditto.
(tspSaveTerraFormRectangularAreaTspec): Ditto.
(tspSaveGeoPyramidTspec): Ditto.
(tspSaveRectangularORGATspec): Ditto.
(tspSaveOldPyramid): Ditto.
(tspSaveMultiImageTileSet): Ditto.
(tspSaveGeoPyramid): Ditto.
* TsTileSpecParse.c (tspTokenEnd): Add function.
(tspTokenStart): Add function.
(tspNextToken): Add function.
(tspNextSymbol): Add function.
(tspNextInt): Add function.
(tspNextDouble): Add function.
(tspExtractNthSymbol): Use first and last symbols to index
tspSymbolFromString().
(tspParseTspecLine): Convert array references to .len and
.val instead of .foo_len and .foo_val and ensure that all offset
arrays are indexed properly.
* TsTileSpecUrls.c (tspFreeNameUrlPairs): Convert array references
to .len and .val instead of .foo_len and .foo_val.
(tspReadNameUrlPairs): Ditto.
(tspMatchName): Ditto.
(tspNameToUrl): Ditto.
(tspSaveNameUrlPairs): Ditto.
* TsTileSpecUtils.c (tspSymbolStrings): Add comments identifying
associated tspSymbol for each string.
(tspReadSymbol): Use first and last symbols to index search.
(tspReadListOfSymbols): Ditto.
* tsmChecksum.c (tsmChecksumPyramidLevel): Convert array
references to .len and .val instead of .foo_len and .foo_val.
(tsmCalcChecksum): Ditto and reflect the fact that checksum
array is now indexed by pyramid level.
* tsmPackTspecs.c (geoPyramidPack): Call geoPyramidUnoffset()
before encoding xdr_GeoPyramid and geoPyramidOffset() afterwards
so that offset arrays are written compatibly with old format.
(geoPyramidUnpack): Call geoPyramidOffset() after decoding
xdr_GeoPyramid so that offset arrays are properly offset.
(pyramidPack): Call pyramidUnoffset() before encoding
xdr_Pyramid and pyramidOffset() afterwards so that offset arrays
are written compatibly with old format.
(pyramidUnpack): Call pyramidOffset() after decoding xdr_Pyramid
so that offset arrays are properly offset.
(nw_TileSetTspec): Call pyramidUnoffset() before encoding
xdr_Pyramid and pyramidOffset() afterwards so that offset arrays
are written compatibly with old format.
(nr_TileSetTspec): Call pyramidOffset() after decoding xdr_Pyramid
so that offset arrays are properly offset.
(identityTspecOffset): New function. Offsets checksum arrays
based on minLevel.
(pyramidOffset): New function. Offsets tspecLevel and
identityTspec based on minLevel.
(geoPyramidOffset): New function. Offsets all component
Pyramids based on minLevel.
(identityTspecUnoffset): New function. Removes offsets from
checksum arrays.
(pyramidUnoffset): New function. Removes offsets from
tspecLevel and identityTspec.
(geoPyramidUnoffset): New function. Removes offsets from all
component Pyramids.
* tsmTileGen.c (tsmImg2Tile): Convert array references to .len and
.val instead of .foo_len and .foo_val.
Modify call to tsmAllocatePyramid().
* tsmTileIO.c (tsmNumBytesPerTile): Ensure that calculation is
based on tile at minLevel and not level zero.
* tsmTopIO.c (tsmGetGeoPyramidInfo): Convert array references
to .len and .val instead of .foo_len and .foo_val.
* tsmTileIO_local.c (tsmGetJPEGTileSize): Convert array references
to .len and .val instead of .foo_len and .foo_val.
(tsmGetLocalTileFromTIFF): Ditto.
(tsmGetTileJFIF_local): Ditto.
(tsmIsTIFFPresent_local): Ditto.
(tsmPutLocalTileToTIFF): Ditto.
* tsmTopIO_web.c (tsmGetPyramid_web): Convert array references
to .len and .val instead of .foo_len and .foo_val and use
tsmMakeSimpleTileSetArray() to allocate tilesets.
* tsmTspecUtils.c (fprint_IdentityTspec): Convert array references
to .len and .val instead of .foo_len and .foo_val.
(fprint_CoordTspec): Ditto.
(fprint_PixelTspec): Ditto.
(fprint_Pyramid): Ditto.
(fprint_MultiImageTileSet): Ditto.
(fprint_NameUrlPairs): Ditto.
(fprint_GeoPyramidTspec): Ditto.
(fprint_GeoPyramid): Ditto.
(check_IdentityTspec_for_strings): Ditto.
(check_Pyramid_for_strings): Ditto.
(check_MultiImageTileSet_for_strings): Ditto.
(check_NameUrlPairs_for_strings): Ditto.
(check_GeoPyramidTspec_for_strings): Ditto.
(check_GeoPyramid_for_strings): Ditto.
* tsmUtils.c (tsmCopyPyramidLevelToBinaryStream): Convert array
references to .len and .val instead of .foo_len and .foo_val.
* test/simple.c (testGeoPyramid): Convert array references to .len
and .val instead of .foo_len and .foo_val.
Tue Sep 30 15:24:55 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* TsTileSpecParse.c (tspReadTspec): pyramid->pathName was taken as
the tspec filename, not the directory name - fixed now.
* ezio.c (ezio_init_inimg): updated all error reporting to use
tsmError
* tsmTileGen.c (tsmDownSample_gaussian): removed duplicate error
messages from Brian's downsampling code
Thu Sep 25 13:55:29 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTileGen.c (tsmDownSample_gaussian): read to uninitialised
memory on first line of image being downsampled - fixed now.
This should cure the random noise on top line of output images.
* TsTileSpecUtils.c (tspAppendFileNameToPathName): not enough
memory allocated for the string! Should be length of pathname +
length of filename + 2. (Not + 1 - we have the '\0' and
potentially the '/' to allocate for.)
* tsmPurl.c (tsmCopyPurl): the port field was not copied - caused
problems when freeing a copied Purl. The port field is now copied.
* TsTileSpecOut.c (tspSaveTspec): fixed an array bounds write
fault caused through tspOpenForWrite writing beyond string size.
This is actually fixed in tspAppendFileNameToPathName (as above),
but the fix here also ensures the client's parameter is not
unexpectedly changed.
* tsmTopIO_web.c (tsmGetPyramid_web): added support for reading of
the new single-file tspec format over http. Currently done by
copying remote file to local disk and reading from there.
* TsTileSpecParse.c (tspIsFileAValidTspec): takes a local filename
and tests to see if the file is a valid tspec file - i.e. can be
parsed without error.
Tue Sep 23 10:44:42 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTileGen.c (tsmDownSample_psample): function to downsample a
source image by point sampling, i.e. taking every 2nd pixel.
(tsmDownSample_gaussian): function renamed from tsmDownSample -
performs a gaussian filtered downsampling of a source image.
(tsmDownSample): function to downsample image with argument added
to control filtering: TSM_GAUSSIAN_FILTER or TSM_POINT_SAMPLE.
Mon Sep 22 12:50:42 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmTopIO.c (tsmLoadGeoPyramidDatabaseIfExist): function to load
a GeoPyramidUrls database if it exists, or to return silently with
a FALSE return code if it does not exist.
(tsmSaveGeoPyramidDatabase): routine to write a GeoPyramidUrls
file (currently only works for local disk)
(tsmAddToGeoPyramidDatabase): add a GeoPyramid name to the
GeoPyramidUrls database, if not already there. Creates a new
database file if one does not already exist
* tsmTileIO_iss.c (tsmGetNextTileHeader_iss): check for an invalid
serverNum should have been a >=, not a >.
(tsmGetNextTileData_iss): same update for > to >=
Wed Sep 17 10:55:04 1997 Martin Reddy <reddy@Lomond.AI.SRI.COM>
* tsmAllocTspecs.c (tsmCopyPyramid): function to duplicate a
pyramid structure, with the option to specify a new base URL
for the Purls/pathName. All strings and arrays are also
duplicated (deep copy).
(tsmCopySimpleTileSet): function to do a deep copy for a
single SimpleTileSet - used by tsmCopyPyramid above.
Mon Sep 22 15:14:18 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* tsmTileIO_iss.c (tsmGetNextTileData_iss): Fix check of invalid
server number.
(tsmGetNextTileHeader_iss): Ditto.
Mon Sep 15 13:28:33 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* configure.in: Update ARG_WITH(dpss24) target to properly check
for threadswrap and spkm libraries.
Wed Sep 10 15:51:46 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* gd.c gd.h: Prototype all functions.
* tsmAllocTspecs.c (tsmAllocatePyramid): Remove unused variables.
* tsmTileIO_web.c (tsmGetTile_web): Remove unused variables.
* tsmTileIO.c (tsmGetTile): Remove unused variables.
* tsmTopIO_iss.c (tsmMasterHostNames_dsm): Remove unused
variables.
(tsmPrepareForDataSets_iss): Remove unused variables.
* tsmTopIO.c (tsmGetAllPyramidInfos): Remove unused variables.
(tsmGetGeoPyramidInfo): Remove unused variables.
(tsmPrintGeoPyramidInfo): Remove unused variables.
Tue Sep 9 15:48:31 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* configure.in (TSMTILEHEADER_SIZE,TSMAPPREQUEST_SIZE):
More reliable, standardized means of extracting these values.
* tsmAutoStructs.h.in: New file.
Tue Aug 12 11:35:16 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* tsmTopIO_iss.c (tsmClose_dsm): Zero dsmHandle on close.
* tsmDecs.h (TsmHandle): Remove the #ifdef ISS conditionalization
inside the TsmHandle structure. ISS-specific structure
IssInterface created and linked in off of issInt.
* tsmMakeAutoStructs.c: Deleted. Functionality moved into
configure.in.
Fri Aug 8 17:34:53 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* tsmPurl.c: Skip leading spaces on URL.
Wed Jul 23 12:02:22 1997 Lee Iverson <leei@Crazypete.AI.SRI.COM>
* tsmExtProts.h: Remove reference to tsmMemManagerInitialize().
No longer needed.
* TsTileSpec.h: Remove reference to tsmMemManagerInitialize(). No
longer needed.
* tsmMem.c (tsmMemManagerInitialize): Remove so that no longer
uses shared memory arena.
(tsmMemManagerMalloc): Remove SGI-specific reference to usmalloc().
(tsmMemManagerRealloc): Ditto.
(tsmMemManagerCalloc): Ditto.
(tsmMemManagerFree): Remove SGI-specific reference to usfree().
Fri Jun 20 17:45:07 1997 Yvan G. Leclerc <leclerc@Moose.AI.SRI.COM>
* tsm...c: Made a number of minor corrections to use DPSS 2.4.3.
Also made changes so that clients includeing the tsm.h file
no longer see any DPSS data structures nor any DPSS include files.
Thus, clients no longer require DPSS include files at all.
Sat Apr 19 20:24:59 1997 Yvan G. Leclerc <leclerc@Crazypete.AI.SRI.COM>
* tsmTopIO_iss.c: Finished modifications to use DPSS 2.4.
These are currently flagged as #ifdef DPSS24 until all DPSS 2.3
systems are eliminated.
* TsTileSpecUtils.c (tspError): Added check for NULL pathName here
and in tspErrorAndClose.
Fri Apr 18 15:24:59 1997 Yvan G. Leclerc <leclerc@Crazypete.AI.SRI.COM>
* tsmTopIO.c (tsmGetPyramidInfo): Improved debugging printout.
Mon Mar 17 14:24:58 1997 Yvan G. Leclerc <leclerc@Crazypete.AI.SRI.COM>
* tsmTopIO.c (tsmGetPyramidBasePurl): Made minor mods so that tsmh
can be NULL when pyramidIdentifier is a URL. Changes in support
of this were made to tsmGetPyramid_local and tsmGetPyramid_web.
Wed Jan 29 10:29:37 1997 Yvan G. Leclerc <leclerc@Crazypete.AI.SRI.COM>
* tsmTrace.c (tsmCvsToString): New function that strips the
keyword and $'s from a CVS string.
(tsmApiReleaseOnly): Returns the tsmApi release stripped of CVS stuff.
(tsmApiReleaseDateOnly): Returns the tsmApi release date stripped
of CVS stuff.
* tsmTileIO.c (tsmGetNextTileHeader): Added level 3 trace when
trIndex is out of range.
* tsmUtils.c (tsmPrintTile): New function to print a tile.
* tsmTopIO_iss.c (tsmClose_iss): Changed trace to level 1.
(tsmClose_dsm): Changed trace to level 1.
Wed Jan 15 08:19:22 1997 Lee Iverson <leei@Canada.AI.SRI.COM>
* Makefile (libtsmApi.a, libtsmApi-DISS.a): Modify rules to reduce
library rebuilds.
* (*.c): More corrections of TSMTRACE args to %p.
Tue Jan 14 17:05:51 1997 Lee Iverson <leei@Canada.AI.SRI.COM>
* tsmTopIO.c (tsmGetAllPyramidInfos): Fix TSMTRINC nesting.
Tue Jan 21 16:58:52 1997 Lee Iverson <leei@Canada.AI.SRI.COM>
* All Files: Update for libgthread library.
Tue Jan 7 16:49:44 1997 Yvan G. Leclerc <leclerc@Crazypete.AI.SRI.COM>
* Added TSMTRINC macro calls to all tsm functions.
Tue Jan 7 10:38:14 1997 Lee Iverson <leei@Canada.AI.SRI.COM>
* The beginning of recorded history.