Changed how plot attributes are managed. Now there is no
default. So
specifying setText( attr, size ) won't set text size if height
attribute not set. You must use setTextHeight explicitly before
the
setText call to initialize height. This is the same with marker
size.

Added Plot::clearLabels so that label area
above and below plot could be cleared and a new set of labels applied

Objects

Fixed a bug in CityTool
where coded WMO for Netherland Antilles was wrong

Added code to Domain to
do line wraps in Lambert Conformal projections

Added XWindow::deleteFrame() to delete all
frames. This is called when window closes to clean up loop pixmaps

Includes

Added inline GridCont::setMapFile

Programs

Added MiscPlot object to
plot and figure programs

Added several key resources to input processing by plot and figure

Fixed a bug in plot
where multiple plots using the same object were literally using the
same object. This meant parameters would not get set because the
parameters from the second would override the first. Now each
plot allocated is allocated so that multiple instances of the same
object are unique and distinct

New in version 6.60 (August 2009)

Features

Added the concept of a value grid. This is a 1x1 grid used
by various functions to represent a constant value grid. This is
mostly used by GridMath to add a value to a grid or scale a grid.

Added first cut of a GRIB writer to GribFile.

Objects

Fixed AreaFile and AreaDir to read data properly on 64
bit platforms

Fixed a small bug in Buffer
related to allocation of buffer data

Added code to delete allocated arrays in BufrFile

Fixed a bug in ColorBar where bar size was not
correct in multipanel displays

Added proper initialization of arrays in ColorFill

Fixed a bug in Contour related to setup of color
parameters

Removed initPlot
function in Contour

Added date, forehour and
data source calls to Contour

Removed drawBar from
drawLabels in Contour.
Moved so GridPlot and other objects could better control bar plotting.

Added line, fill and text attribute reset to Contour

Fixed initial color
parameter settings in Contour

Added ability to set
line type and width from color_fill
even when specifically not using colors

Changed DateTool::createLabel to handle forecast hour
as float rather than int (need this for sub hour forecast times)

Added Datum::clearData

Added concept of a nx
by ny domain on XY plane (use
with value grids)

Fixed a bug in Enhance
to make sure lines starting with @ are treated like comments (other
than specific directives)

Added code in Figure to
delete allocated objects

Changed how refresh is handled in Figure. If not "1", then the
refresh time is the loop increment

Changed ForeTime to
handle forecast times in decimal hours (float rather than int)

Changed ForeTime::getForeHour to getHour

Added ForeTime::getSecs to return forecast time in
seconds

Added close to GiniFile::readHeader if file has illegal
parameters

Added counter to GribFile::read( Grids ) to stop reading when
all grids have been found

Removed several grid.setSize calls that were not needed in GribFile

Fixed bug in GribFile relative to computation of
domain in Mercator grids

Changed setDomain in Grid to set nx and ny. Don't
call setSize to set nx and ny

Added Grid::getForeSecs

Set up Grid to use a 1x1 grid as a value
grid (i.e. constant value for all points). This returns a
constant value for all x and y in getValue and is used in GridMath for
addition and scaling by a value

Added Grid::isValue to check for value grid

Fixed color and plot initialization in GridCont

Removed GridCont::initPlot

Added "nolabel" option
to GridCont

Removed plotGridvalues from GridCont (in Contour already)

Added GRIB write to GridFile

Added "add", "sub",
"mul" and "div" to GridMath::process

Removed early returns
in GridMath so that grid post
processing can occur (setting of output info label)

Added value grid use to various GridMath
functions

Removed GridPlot::plotGridValues (in Contour already)

Added GridSpec::isVarSet

Added counter in GridTool to stop reading in grids if
all grids found

Added "noLabel" option to GridVect

Added color bar and
vector bar (vbar) options to GridVect

Fixed label generation
code in GridVect

Fixed several 64 bit
issues in Gvar code

Added initClass to Image to set pointers

Changed set function in Level
to check order of levels so that lowest is first. It also checks
for missing levels

Fixed several issues in Level
where output coded levels is wrongly computed for layers

Added generic set
function to ObjectAnal to
unify the setting of parameters

New in version 6.59 (June 2009)

Added "sync" parameter to plot objects to target that object as
the time and loop sync. Rather than using the first plottable
object, you can specify an object as the time sync with the "sync"
parameter. The base time and loop increment are based on that
object. This is useful for overlaying radar on
satellite. Without sync, the plot would use the latest
satellite image and update every 15 minutes. With sync, the
plot will use the latest radar plot and update every 6 minutes.

Added quote delimiting to strings parsing. This means
a string won't be broken on "," if a parameter is quoted:

OLD: -pa=x,y,va=a,b,c,cod=white
NEW: -pa=x,y,"va=a,b,c",cod=white

In the old version, b,c would be individual parameters and not variable
specifications. With the parameter delimiting, "va=a,b,c"
is preserved for variable parsing.

To simplify and make consistent the parameter specification, the "plot_param" resource has been
replaced with just "parameter".
Most
objects
have a setParam method and the parameter
resource is passed to this
method.

Some functions were reworked to work on 64 bit platforms.
RHEL5 64 bit versions are now available.

Objects

Added buffered decompression in BZlib
object (see Buffer object)

Added Buffer object for
use of buffered data

Added Calc::dist for
simple distance computations

Rewrote Cdf object to
use v3 function calls and use of IntArray for dimension and array
offsets

Added generic get and put functions to Cdf object for use with Perl

Removed Tools::convertIdToWmo and replaced with CityTool::toWmo

Removed "plot_param" resource and replaced with "parameter"

Added Date::fix to zero
out missing date elements

Added Date::printSeconds

Reworked DateRange to
not store start and end date but to have base date and pre and post
values. This means base date can now be set independent of pre
and post

Added Datum::addFormat
to append format information

Added track plot type to DatumAttr

Added Domain::set( ul,
lr, nx, ny ) so that domains can be set from corner lat,lon
specifications

Added Domain::set( char
* ) so that only projection parameters are specified

Fixed several bugs related to passing missing values to Domain::tran. This makes sure
that if missing values are passed to it, missing values are returned

Added getSync to Drawing
protoype so that drawings can return whether they are the time sync

Reworked time specification in Figure
object. It now only uses file time for base date is current is
set to "la" (it would have to then). Now, for other current
specifications, it uses time based on current time

Added time sync parameter to Figure
so that base date and loop parameters are based on the object with
"sync" set and not on the first available object

Added buffered read (Buffer object) to File

Added FileTool::checkPath
which adds a path to a specified filename and checks for existence

Fixed several bugs in Filename
related to filenames with missing date parameters. Now the date
is fixed first so that weird filenames aren't generated

Added "obs" to ForeTime
as an equivalent to "anal"

Changed GFont::getSize
to getWidth

Simplified reading in of compressed GINI files by using buffered
data rather than arrays. This gives better error checking on data
decompression.

Fixed several bugs in Graph
that would cause core dumps if for some reason a plot hadn't been
opened or had been closed inadvertantly

Added Graph::getDropShadow
so value can be saved and then restored

Added "light" marker to Graph
for the display of lightning data

Added Grid( nx, ny )
constructor

Added Grid::setLevel, setForeTime and setVar where strings can be passed
to set parameters. This is useful with Perl

Added GridCont::initPlot
to initialize just the contouring parameters

Added check in GridMath::remap
to make sure domain is set, otherwise do a null remap (i.e. copy)

Fixed several bugs in Hash
object related to mulitple keys. The Hash object had been set up
to store all objects entered into it, even duplicates. This made
it difficult to find matching data to update in the hash, such as
updating decoded METAR data. Now only duplicates are saved if at
least one of the hash keys is different.

Fixed bug in Hash where
first item in each table entry was never used

Fixed some initialization bugs in ImagePlot

Added map specification to ImagePlot
so that it can plot a map like other plot objects

Reworked ImgWxpFile to
handle new swap functions (Int2 rather than Short)

Finalized and got working IngestFile
object so that it now replicates WXP 5 ingest program

Added sequence number testing to IngestFile

Fixed bug in Level where
for static levels, a missing value is returned by toLevelCode

Fixed how Level
interprets layers. Now it makes sure lowest level is in level1

Reworked LightFile to
use new swap functions (Int2 and Int4 rather than Short and Long... for
64 bit clarification)

Added color data and fill parameters to LightPlot

Changed LightPlot to use LightFile::getType
for input type specification

Added new "light" marker type to LightPlot
to plot a "Z" like symbol at strike location

Fixed bug in LightPlot
where USPLN data would be labeled as NLDN data

Reworked MapFile to use
new swap functions (Int2 and Int4)

Added grid plot to MapPlot
so that a specific grid can be plotted on a map from the wxp.reg file

Added MdrDecode object
to decode MDR data

Added MdrDomain object
for processing of MDR grid domain

Fixed several bugs in MdrFile
related to decoding MDR data

Added MdrHash for
processing of MDR sites in decoding

Reworked MdrImage to use
MdrDomain for location of radar echos

Reworked and fixed MdrPlot
so that it can now plot MDR data

Fixed several bugs in MdrWxpFile

Added MdrWxpFile::write
to save decoded data from MdrDecode

Fixed a couple of bugs in MetarTool
relating to decoding of METAR type. Fixed date decoding from
observation time. Fixed bug related to early RMK in Canadian
METAR reports

Reworked NidsFile to use
buffered input for decompression. This fixes several bugs related
to the decompression of TDWR data and simplifies the decompression
process

Changed label of Dbz to dBZ in NidsPlot

Changed distance rings in NidsPlot
to KM rather than NM. A new "distm" parameter added to
handle rings in NM

Added code to determine base domain in NidsPlot to use identifier resource
inquiring lat,lon from rad.cty. This fixes bug where some loops
with missing frames could result in bad domain specification

Fixed table overlay in NidsPlot
to plot fixed text and not scale to width of display

Added drawStorm to NidsPlot
to manage plotting of storm attributes

Fixed labeling of NidsPlot
storm attributes. It used to just plot "NIDS Data" and now plots
actual parameters being plotted. A group label can now be used
NIDS_Data{cid,tops,...} to reduce label clutter

Fixed bug in NidsPlot so
that units of parameters can now be converted

Added "cstat" parameter to NidsPlot
to plot a status marker at storm location

Added a "meso5" parameter to NidsPlot
to plot only mesos with a MDA value >= 5

Added Plot::getDomAspect
function to return domain aspect ratio

Added Plot::drawLine(
GridPoint, GridPoint )

Added resetting of drop shadowing in Plot for lines, markers and text

Added shadow specification to PlotAttr
(-cod=white,sh=3)

Added "light" marker specification to PlotAttr

Added RadMask object to
generate winter mask for radar mosaics

Fixed several bugs in RadPlot
related to managing parameters between various types of radar plots

Added within method to EarthPoints to check to see if point
within a polygon

Added drawing methods to Figure

Fixed a NULL pointer problem in File::isStdio

Added getModTime method
to File

Changed Filename to
retrieve type info from NameConv

Changed FrontPlot to
plot FrontData seperately (FrontPlot::draw( Plot, FrontData)).
The FrontData class used to be local to FrontPlot. Now FrontData
can be set up external to FrontPlot and use FrontPlot to plot it.

Fixed bug in FrontPlot that
only
used
every other point in front plotting

Added variable type
specification for Variable.
This
allows
for ensemble type and probability specs within Variable.

Added toIndCode, toParamCode and decode to Variable

Changed Grid, GribFile,
GridSpec and GribPDB to use new Variable type specification

Added table specification to GribParam::getVer1Param

Fixed bug in GribParam for GRIB1 variable
specification

Added in support for GRIB2 data templates that support ensemble
data. Templates include 1, 2, 5, 9, 11 and 12.

Added support for thinned grids in GRIB2 format

Added gen_name parameter string to Grid so generation location can be
specified when model number is not appropriate or known.

Moved WxpGridFile to GridWxpFile

Fixed bug where GridFile
wasn't passing along use_header to GribFile

Added GridSound class
for extraction of sounding from grid data

Added nextKey and printData to Hash

Changed size and offset
from int to float for Device
classes

Added merge and blank methods to Image

Moved WxpImgFile to ImgWxpFile

Added max eq pot temp and equilibrium levels to Level

Fixed bug with hybrid layers

Use correctLine and offsetLine in MapPlot

Moved WxpMdrFile to MdrWxpFile

Added new MetaFile
output device

Moved RawSfcData to SfcRawData

Changed how ramp function is computed in NidsImage to allow for values not
every 5 dBZ

Added getHeaderLoc to Parse

Changed Planet to use
Date for date/time rather than julian date. Changed method names
to reflect change

Added saving loop images to file in Plot. Used to only save for
single frame plots.

Changed line and fill area methods in Plot to use correctLine and
offsetLine to account for earth wrap around

Added drawSpline method to Plot

Added draw specification
(setDrawing and isDrawing) in Plot to
turn
off
particular parts of a plot (see draw resource in WXP5).

Fixed a bug in PngFile
that didn't use the right parameters for image size

Moved WxpRcmFile to RcmWxpFile

Added Raw class, based on Data for output of raw point data
from various plot classes

Fixed DataRange specification in RcmImage

Changed domain
specification in RedbookFile
and RedbookPlot

Changed RedbookVector to
use Points class rather than x,y arrays

Changed plotting in RedbookPlot
from using plot coordinates to using Domain transformations.

Added label plotting from redbook.lup to RedbookPlot

Moved RawSfcData to SfcWmoData

Moved UniSatfile to SatUniFile

Added ability to read from GIF and PNG files in SatFile

Added ability to plot GIF and PNG files in SatPlot that have navigation text
embedded in file.

Added min_lon and max_lon specs in SatPlot to eliminate image outside
of those ranges. Used for overlaying images.

Fixed bug in SatPlot
that assumed all images were indexed color. True color images
will now be displayed as is.

SfcRaw and UpaRaw now outputs Raw class instead
of Data

Moved CdfSfcFile to SfcCdfFile

Moved UniSfcFile to SfcUniFile

Moved XmlSfcFile to SfcXmlFile

Moved RawSfcFile to SfcWmoFile

Moved UpaData to UpaRawinData

Moved UpaMergeData to UpaData

Moved ThermDiag::plotDiagram to draw

Finalized ThermPlot
adding appropriate labels

Moved Tiff to TiffFile

Fixed Tools::toString(float, String) to
account for limits in sig digits in single precision float

Moved merge method from UpaMergeData to UpaTool

Moved RawUpaData to UpaWmoData

Moved RawUpaFile to UpaWmoFile

Moved WxpUpaFile to UpaWxpFile

Moved Watch to WatchData

Fixed read in of watch replace advisory in WatchFile

Fixed check for replace and cancellation in WatchPlot

Added drop shadow to WatchPlot

Added use of "fixed" for hardware font in XWindow

New in version 6A37 (June 2006)

In an effort to continue to work on the new object oriented version of
WXP. About 70% of the WXP library is now rewritten in C++.
WXP6 will have a different look and feel in that monolithic programs
like sfcwx, rad and grbcalc go away. WXP6 eliminates the need for
wxploop as plotting can be directly scripted. But WXP6 programs
can still plot to a wxploop window for backward compatibility.

Plotting as objects

WXP6 uses a simple object for plotting, not a monolithic program.
Resources can still be set through a function interface or by using the
old resource settings. Objects are initialized using the WXP
resource settings.

Plot and Figure objects

WXP6 has a Plot and Figure object. Plot is used
when a simple plot is needed. This is ideal for outputing to GIF
images. The Figure object will cause the plot to act more like
WXP5 with rescaling, zoom and query capabilities.

Perl and Python interfaces

WXP6 is scriptable using Perl and Python. This will replace the
need for complex scripts like we have today with WXP5. Objects
can be created in these scripting environments and reused.

Low level programming

This will allow the user to access the WXP library and do more with the
data. The hope here is to eliminate the problems associated with
monolithic programs. You can read in raw files and plot them how
you want them rather than burying the plotting attributes in the raw
file. DatumPlot allows you to add annotation without having to
create a raw file. A new ImagePlot object will allow you to read
in images with imbedded projection information and display them.
The MapPlot object will use "mdb" files to plot specific pieces of map
data including filled in areas such as specific counties or
zones.

New in version 6.0A18 (February 2005)

GRIB2 additions

Added support for DRS templates 1,2 and 3 to handle NDFD grids.
Added
support for DRS template 40 (same as 40000 for Jpeg2000
compression).
Changed the grid type specification for lat-lon grids to be more
representative of the actual values. Added support for Mercator
grids. Added support for "max" and "min" time ranges in GRIB2.

Added support for multiple grids in a single product. CONDUIT
grids put U and V wind in the same GRIB2 product.

Bug Fixes:

Fixed GDS lat-lon domain problems for GRIB2. This allows
the use of CONDUIT grids.

Fixed bug in forecast time determination for GRIB2.

Fixed several bugs in vertical level determination for GRIB2.

Fixed redbook file read for LDM data files. The redbook
program improperly read in the WMO header and got into infinite loop.
Added check for bad redbook headers to notify user if not a redbook
product.