1999-07-08  Havoc Pennington  <hp@pobox.com>

	* Makefile.am: Add data group stuff

	* barplot.cc: use Data::is_a

	* data.cc: Use TypeRegistry for typing the Data objects.
	Add new is_a() method and use it for casting. 

	* datedata.cc: Add enough features to make this usable. 

	* fontoption.cc: don't blame gnome-print for lack of GdkFont

	* gfont.cc: Fallback to random font if gnome-print doesn't return
	anything. Could fallback to something a bit smarter, if we were 
	ambitious.

	* gnome-util.cc: pack children differently in labelled widget
	routine.

	* pieplot.cc: use Data::is_a setup

	* plotdraw.cc: Several price bar tweaks; try to get a more
	reasonable line width. Use new price data group, instead of 
	the scalars, etc.

	* typeregistry.cc: allow name changes for existing types

	* datagroup.h, datagroup.cc: new file, implementing bundles of 
	data. DataGroup. Has an arbitrary number of typed "slots"

	* dataspecstore.h, dataspecstore.cc: store a list of possible
	types of DataGroup (DataGroupSpec)

	* util.h, util.cc: Create price group spec and make it available
	globally.

	* xylayers.h, xylayers.cc: Make XyPriceBars use the DataGroup for 
	price data

	* xyplot.h, xyplot.cc: handle new XyPriceBars 

	* xyplotedit.cc: handle new XyPriceBars

	* xyplotstate.cc: handle DateData on price bar axes, and DataGroup 
	setup

	* datagroupedit.h, datagroupedit.cc: new code, editor widget for
	arbitrary DataGroup

	* axis.h, axis.cc: currently unused, will be new version of Axis
	
1999-06-23  Havoc Pennington  <hp@pobox.com>

	* Makefile.am: Add gnome-canvas-arc, rangelist

	* canvas-axis.cc: Honor label color parameter for ticks

	* canvas-lineplot.cc: Don't try to draw lineplot for 1-point
	plots.

	* dataimport.cc: #include <errno.h>

	* gfont.h, gfont.cc: Add a way to get the GnomeFont

	* gnome-canvas-arc.cc: Remove spew. Apply fixes for path generation 
	from  Jan-Oliver Wagner <jwagner@usf.Uni-Osnabrueck.DE>,
	Frank Koorman <Frank.Koormann@usf.Uni-Osnabrueck.DE>, 
	Bernhard Reiter <Bernhard.Reiter@usf.Uni-Osnabrueck.DE>

	* pieplot.cc: Use GnomeCanvasArc, fix default dataset selection,
	label the slices. From  Jan-Oliver Wagner <jwagner@usf.Uni-Osnabrueck.DE>,
	Frank Koorman <Frank.Koormann@usf.Uni-Osnabrueck.DE>, 
	Bernhard Reiter <Bernhard.Reiter@usf.Uni-Osnabrueck.DE>.

	* pieplotstate.cc: Add slice colors, labels. From the same guys.

	* plotdraw.cc: Properly set filled/unfilled for scatter markers. 
	Set larger line width for price bars.

	* plotutils.h: Add x2() and y2() methods to Rectangle. Add label
	color to tick marks. 

	* printer-gnome.cc: Add print function with printer dialog.
	Implement setfont(). Fix infinite mutual recursions in concat()
	and setmatrix(). Add translate, scale, rotate. 

	* printer.cc: Add circle-drawing convenience function

	* state-print.cc: Implement printing for scatter and line plots.

	* view.h: Fix Model interface; switch to vector for storing list of 
	views, for iteration speed and small size at the expense of slow
	add/remove view; change add_view and remove_view to take pointer 
	arguments, then use partial specialization to save about 56K of
	disk space.

	* xyactions.cc: Use new print dialog stuff

	* xyaux.h: Stuck in XyLineStyles class, not yet used.

	* rangelist.h: New class, stores range-value pairs. A range is an
	interval specified by two doubles. Ranges in the list don't
	overlap.

	* test_rangelist.cc: Small program to make sure rangelist works.
	
	* barplot.cc: Adapt to new Model interface

	* barplotedit.cc: ditto

	* barplotstate.cc: ditto

	* dataoption.cc: ditto

	* datastore.cc: ditto

	* markerpaletteedit.cc: ditto

	* pieplotedit.cc: ditto

	* scalardata.cc: ditto

	* xylayers.cc: ditto

	* xyplot.cc: ditto

	* xyplotedit.cc: ditto

	* xyplotstate.cc: ditto
	
1999-06-11  Havoc Pennington  <hp@pobox.com>

	* canvas-axis.cc: Show/hide the child items in the update() method

	* plotdraw.h, plotdraw.cc: New files to store drawing code in.

	* canvas-scatter.cc: Clean this up (move code to plotdraw.cc)

	* data.h, data.cc: const versions of the cast functions

	* dataoption.cc: Try to make the option menu's size request right
	by setting the menu after filling the menu; still
	busted. GtkOptionMenu is busted.

	* datedata.h, datedata.cc: Implemented datasets to store dates.
	This builds but isn't in the build for now (it requires CVS goose)

	* gfont.h, gfont.cc: Lots of fixes to the fonts; added GFontList
	to get a list of available fonts; improved error handling if 
	gnome-print is misconfigured

	* gnome-util.cc: Added font-related stuff, and
	guppi_make_labelled_widget() convenience function. Also changed 
	the default font routine to match new GFont stuff.

	* plotutils.cc: More sort algorithm speedups; allocate the qsort
	partition stack on the stack. Sort is now .25 seconds for 250,000
	doubles in the worst case on P300. Still haven't tried
	triple-partition qsort; could be even better. Added lots of stuff
	to the Axis class, and enhanced the Tick class. Most of this is
	font-related.

	* rgbdraw.cc: Added a way to set the line width for a GC.
	Fixed drawing functions to honor this. Added paint_segments() 
	routine. 

	* scalardata.h, scalardata.cc: reformatting and comment fixes

	* util.h: Added GUPPI_NOT_IMPLEMENTED macro

	* vfont.h: Make the font metrics functions const

	* xyactions.cc: Menu items to add price bars and show axis
	properties dialog; rename Properties to Layer Properties.

	* xyaux.cc: add const versions of x_data() and y_data() to XyPair.

	* xylayers.cc: Add price bars layer.

	* xyplot.cc: Display price bars layer

	* axisedit.h, axisedit.cc: New files, implementing an "axis
	editor" widget

	* xyplotedit.cc, xyplotedit.h: Add XyAxisEdit dialog.

	* xyplotstate.cc: be smarter when autosizing axes (handle price
	bars).

	* canvas-pricebars.h, canvas-pricebars.cc: Price bars canvas
	item.

	* dataimport.cc, dataimport.h: New data import stuff; not very
	nice yet.

	* fontoption.h, fontoption.cc: New option menu for selecting a font;
	used in AxisEdit

	* gnome-canvas-arc.h, gnome-canvas-arc.c: Dumped in here for now,
	so people can start working with them.
	
1999-06-01  Havoc Pennington  <hp@pobox.com>

	* pieplotstate.h, pieplotstate.cc, pieplot.h, pieplot.cc,
	pieactions.cc: New files. 

	* state-print.cc: Stub function for pie chart
	
1999-06-01  Havoc Pennington  <hp@pobox.com>

	* gnome-util.h, gnome-util.cc: Add guppi_logo_file() to try to
	find the logo file; add guppi_setup_window() to play with icons
	and set the class hints.

	* Makefile.am: define symbol for pixmap directory	

	* xylayers.h, xylayers.cc: Start on price bars stuff
	
1999-05-27  Havoc Pennington  <hp@pobox.com>

	* guppi-math.h: New compat header, used if math functions are
	missing.

	* barplot.cc, barplotstate.cc, barplotstate.h: Start on support
	for labelling the bars

	* canvas-axis.cc, canvas-scatter.cc, canvas-lineplot.cc: Include
	guppi-math.h for rint()

	* dataoption.h, dataoption.cc: Optionally restrict datasets
	presented in the menu to datasets with a certain type.

	* labeldata.h, labeldata.cc: Make it work

	* xylayers.cc: Handle non-scalar data

	* xyplot.cc: hide the background item if it has a 0 dimension

	* xyplotedit.cc: restrict data options to Scalar type

	* xyplotstate.cc: include guppi-math.h
	
1999-05-26  Havoc Pennington  <hp@pobox.com>

	* data.h, data.cc: Add a new type for LabelData

	* labeldata.cc, labeldata.h: New files, for plot labels.

	* plotutils.cc: define M_PI if it isn't.
	
1999-05-25  Havoc Pennington  <hp@pobox.com>

	* Makefile.am: Build sort_bench instead of "checkdepends"; at
	least sort_bench has a point

	* sort_bench.cc: Small program to test sort routines.

	* plotutils.cc: Improve the sort routine; the large change
	is to bail out to a shell sort if qsort fails miserably 
	on a partition. This should avoid qsort's worst case,
	and qsort's best cases should generally be unaffected.

	* scalardata.cc: Don't clear at the start of recreate(); instead
	assert that we already have.

	* xyactions.cc: Reimplement the remaining tools broken by the 
	new layers code.

	* xylayers.cc: Actually add ourselves as a view of the datastore,
	so we detect point value changes.

	* xyplot.cc: Minor cleanup

	* xyplotedit.cc: Allow toggling the "masked" flag.

	* xyplotstate.cc: Add a way to create a layer without 
	affecting the axes.

	* xypair.h, xypair.cc: Remove this old cruft.

1999-05-18  Havoc Pennington  <hp@pobox.com>

	* Huge merge from 'devel', changing scatter to XY and adding 
	layers concept

	* Makefile.am: reflect new/removed files, make distcheck fixes

	* scatter*: Removed all the scatter files

	* xyaux.h, xyaux.cc, xyplotstate.h, xyplotstate.cc, xyplot.h,
	xyplot.cc, xyactions.h, xyactions.cc: Bunch of new files,
	replacing the scatter plot with a new framework.
	
	* barplot.h, barplot.cc: Reflect new workings of GuppiAxis; do a
	gratuitous gnome_canvas_item_request_update() to try to workaround
	the canvas refresh bug.

	* canvas-axis.cc, canvas-axis.h: Change GuppiAxis to use an "info
	func" much like GuppiScatter, so info is demand-loaded.

	* canvas-scatter.cc, canvas-scatter.h: Misc. cleanup, 
	reflect new "layers" thing, change point method to not require
	tiles (large speedup when dragging points).

	* datastore.cc: Bug fix: remove Data* from internal data structure
	before emitting notification of its removal.

	* gfont.cc: Improve "no font found" error message so people email
	the gnome-print developers instead of me. :-)

	* gnome-util.cc: s/scatter/xy

	* guppi-canvas-text.cc: don't load a default font in _init();
	init gc and stipple with NULL; move X resource creation and
	unreference to the realize/unrealize pair.

	* markerstyle.h: Refcount the marker palette

	* plotutils.cc, plotutils.h: add a way to get a string
	representing a PositionType; add set_identity() to affine; add
	"hidden" flag to Axis. 

	* rgbdraw.h, rgbdraw.cc: Add a paint_line() that accepts an array
	of points

	* scalardata.cc, scalardata.h: Futz around with update
	optimization, give up and just regenerate the tiles every time.
	Left some cruft in there with #if 0

	* state-print.cc, state-print.h: s/scatter/xy

	* util.cc: Ref/unref markerpalette

	* xypair.cc: Supposed to have been removed; changes are
	irrelevant. Will remove on next merge. Replaced by xyaux.cc
	
1999-05-05  Havoc Pennington  <hp@pobox.com>

	* canvas-scatter.cc: Change point method to do crude bounds
	rectangle matching. The "exactly on a point" method was causing
	massive slowdowns because every event during a point drag resulted 
	in updating the tiles structure.

	* scalardata.cc: Added a "cache changes until idle loop"
	optimization, but it turned out that the point method was the
	problem. So commented out.

	* scatteractions.cc: Tooltip PointID stuff

1999-05-04  Havoc Pennington  <hp@pobox.com>

	* fixedtip.h, fixedtip.c: Tooltip-like widget, but no timer and no
	attaching to widgets, you just position it absolutely.

	* Makefile.am: Add the GtkFixedtip widget
	
1999-05-04  Havoc Pennington  <hp@pobox.com>

	* Makefile.am: add menuentry.cc

	* menuentry.h, menuentry.cc: add a magic type code, so the Scheme
	wrapper can tell whether there's an internal SCM that needs
	marking.

	* data.h: Rename CalendricalData to DateData, save me typing.

1999-04-28  Havoc Pennington  <hp@pobox.com>

	* pointtiles.cc: Store real indices instead of sorted.
	Bugfix tiling routine, so that it works with duplicated
	X values in the data set. Write code for incremental update;
	fix code to allow infinitesimal overlap of tiles (caused by
	duplicated values in data sets); add huge debug-only sanity check.

	* canvas-scatter.cc: Fix to reflect new PointTiles; re-add code 
	to draw outlines of tiles in debug mode.

	* plotutils.cc: canonicalize_rectangle for ints.

	* scalardata.cc: Incremental update of all the sorted stuff; 
	rename convert_ and backconvert_ so in the future I will know 
	what the hell is going on. Massive debug checks.

	* scatteractions.cc: separate out get_points_in_region() from all 
	the actions, and change it to use real indices from the tiles
	(instead of sorted)

	* scatterplotstate.cc: Do something sane when optimizing axes and 
	 max-min is 0.

1999-04-26  Havoc Pennington  <hp@pobox.com>

	* pointtiles.cc: Untested implementation of single-pair update
	(moving a pair with changed values to a new tile)

	* scalardata.cc: Non-working implementation of single-pair update
	(fixing sorted array in-place rather than massively resorting).
	Still regenerates entire array and tiles for now.

1999-04-26  Havoc Pennington  <hp@pobox.com>

	* scalardata.cc (update): Don't access convert_ if we haven't 
	recreated our arrays.

	* scatteractions.cc: Implement drag-point-to-change-its-value
	tool. Fixes for the PointID tool (displays the point's index).

1999-04-26  Havoc Pennington  <hp@pobox.com>

	* scatteractions.cc: Add recenter, recenter X, and recenter Y actions.

1999-04-22  Havoc Pennington  <hp@pobox.com>

	* menuentry.h: Declare class Plot in advance.

1999-04-21  Havoc Pennington  <hp@pobox.com>

	* plotstate.h, plotstate.cc: introduce base class for all 
	plot states.

	* scatterplotstate.h, scatterplotstate.cc: derive from PlotState

	* barplotstate.h, barplotstate.cc: ditto

	* scatterplot.cc, barplot.cc: Destroy rather than unref the 
	canvas objects when we're done with them; otherwise they 
	don't go away since their group holds a reference too. Fixes bugs
	in bar plot.

	* barplotstate.cc: Add axis labelling to the bar plot, leave space
	for it. 

	* gnome-util.cc: ref() the default font so it doesn't get deleted.

	* plot.h: "resize locks" to fix the multiple views problem; 
	use the PlotState object.

1999-04-19  Havoc Pennington  <hp@pobox.com>

	* view.h: corrected a comment

	* xypair.h, xypair.cc: sub-components of the scatter plot state,
	to be shared between them. Including markers, axes, and data set
	pointers. Finished up.

	* scatterplotstate.cc, scatterplotstate.h: Massive overhaul to
	work with new swarm-of-potentially-shared-components setup. Layout
	calculations changed to accomodate labels.

	* scatterplotedit.cc: Fix bugs - dialog didn't close when the
	state died, refcounting wasn't right.

	* scatterplot.h, scatterplot.cc: label axes; handle fonts; have a
	name and broadcast it to views.

	* plotutils.cc, plotutils.h: Use the font stuff to ticks and axes,
	add copy constructors as needed to copy fonts properly.

	* gnome-util.cc, util.h, util.cc: Add a "frontend" interface to be
	provided by each frontend; add default_font() method to said
	interface. Register a Frontend for the Gnome frontend during
	library initialization.

	* gfont.h, gfont.cc, vfont.h, vfont.cc: Font implementation and
	virtual interface. Uses gnome-print internally.

	* canvas-axis.h, canvas-axis.cc: Manage a bunch of text objects
	for the tick labels. Clean up the drawing code significantly,
	since we have nice drawing primitives now.

	* barplotstate.h, barplotstate.cc, barplotedit.h, barplot.h, 
	barplot.cc, barplotedit.cc: name the plot, add model-view, etc.

	* plot.h: change plots so they have a name and a corresponding
	model-view attribute.

	* Makefile.am: Build the font/print/text stuff.

1999-04-09  Havoc Pennington  <hp@pobox.com>

	* markerpaletteedit.cc: Add some tooltips.

	* rgbdraw.h, rgbdraw.cc: Add filled attribute to RGB::Context, 
	add paint_convex_polygon(), honor filled attribute in all paint
	functions.

	* markerstyle.h: Add new marker shapes.

	* canvas-scatter.cc: Draw new marker shapes.

	* state-print.cc, printer.h, printer.cc, printer-gnome.h,
	printer-gnome.cc, gfont.h, gfont.cc, vfont.h, vfont.cc: 

	Fold in and enhance all this, so all the boring parts of getting
	printing to work are done. Now it is just necessary to write the
	code that reads the current plot state and draws to the printer,
	and put in a printer dialog.

	* Makefile.am: Build all the print stuff.

	* baractions.cc: Add menu item for printing Bar Plot.

	* scatteractions.cc: Move the properties dialog to a menu item.
	Add print menu item.

	* scatterplotedit.cc: Set some tooltips, add toggle buttons
	to change axis optimization behavior.

	* scatterplotstate.h, scatterplotstate.cc: Add convenience 
	functions to optimize axes, since I'm doing that all over 
	the place.

	* util.cc: Don't warn if the global marker palette is 0, that 
	should be OK.
	
1999-04-08  Havoc Pennington  <hp@pobox.com>

	* util.cc (guppi_marker_palette): Don't warn if MarkerPalette is
	0, it should be OK.	

1999-04-08  Havoc Pennington  <hp@pobox.com>

	* canvas-scatter.cc: Never use sorted array of data directly,
	instead access values via SortedPair. This means the sorted array
	no longer has to exist...

	* scalardata.h, scalardata.cc: Sorted/Real index conversion was
	completely borked. I don't know how it ever did anything at all. 
	I've now added massive g_assert() to check sanity, and fixed
	things. Also, I no longer keep the sorted array of doubles around,
	which should help with our memory footprint. This should fix bugs
	with brushing and point identification.

	* scatterplot.h, scatterplot.cc: Move tiles() function here.

	* scatteractions.cc: Change Edit to Point ID, move properties
	dialog to a menu item.	

	* xypair.h, xypair.cc: More work on this.

1999-04-07  Havoc Pennington  <hp@pobox.com>

	* xypair.h, xypair.cc: Starting on separate objects representing 
	the data being plotted, and the styles applied to it. So you can
	plot A vs. B and A vs. C with the same style, or have A vs. B 
	shown with two different axis ranges. Will also break
	out the axis stuff, so you can have A vs. B and A vs. C on the
	same axes. 
	
	* scatterplotstate.cc (style_in_use): Fix stupid mistake (I
	thought I was searching a vector instead of a set so didn't use
	find())

1999-04-07  Havoc Pennington  <hp@pobox.com>

	* barplot.cc: Fix the initial position of the bars. BarPlot is 
	kind of broken right now, I hadn't looked at it lately. Hmm...

1999-04-06  Havoc Pennington  <hp@pobox.com>

	* scatteractions.cc: Add a new menu entry for "optimize axes"

	* plot.h: add new_view() function to the interface, clones 
	the Plot using the same state.

	* scatterplot.h, scatterplot.cc: Monitor MarkerPalette for 
	style changes, update the canvas when we get one.

	* scatterplotstate.cc: Remove pointless recalc_ticks() after axis
	change when optimizing axes; add new method, style_in_use().

1999-04-06  Havoc Pennington  <hp@pobox.com>

	* scalardata.cc: Store a PointTiles in the SortedPair, this will 
	save bunches of RAM if you have multiple views on a scatterplot, 
	and speed things up since the PointTiles won't be regenerated as 
	often. Uses slightly more RAM if you are viewing only a small 
	part of the data, since it always tiles all the data.

	* canvas-scatter.h, canvas-scatter.cc: Don't create tiles
	here.

1999-04-06  Havoc Pennington  <hp@pobox.com>

	* markerpaletteedit.cc: Cosmetic improvements to the palette
	editor.

	* canvas-scatter.h, canvas-scatter.cc: Have the canvas scatter
	just get a pointer to the state, then extract other information
	from that, instead of having to pass all the other info around.

	* scatterplot.h, scatterplot.cc: Adapt to changes in
	canvas-scatter.

1999-04-01  Havoc Pennington  <hp@pobox.com>

        * barplot.cc: Remove menu entry stuff.
	
	* scatterplot.cc: Remove the palette edit menu entry

	* scatteractions.cc: Add palette edit menu entry here.

	* plot.h, plotstore.cc, plotstore.h: Move menu entry listing from Plot to 
	PlotStore, in PlotStore register menu entries just like tools and
	actions. Also, in the destructor, properly unref() the tools 
	in the current_tools_ list.

1999-04-01  Havoc Pennington  <hp@pobox.com>

        * canvas-scatter.cc (guppi_canvas_scatter_point)
	(guppi_canvas_scatter_update) (guppi_canvas_scatter_bounds): Don't 
	compose affine with transform, I finally got sick of those
	warnings. 

	* gnome-util.cc: Add code to install menu hints for
	non-GnomeUIInfo menus.

	* markerstyle.cc: Add concept of "current style" to be used in 
	brushing.

	* markerpaletteedit.cc: Account for "current style".

	* plotutils.cc: Add hypot() wrapper, add debug sanity check 
	to be sure sort routines work.

	* scalardata.h: Routines to return value based on real index.

	* scatteractions.cc: Add Brush action. Change Edit action to
	permit identifying a particular point.	

	* toolbox.cc: Give the window a better title.
	
	* Makefile.am: Comment out testrgbdraw, since I'm not writing 
	anything worth testing due to the MI library.

1999-03-31  Havoc Pennington  <hp@pobox.com>

	* rgbdraw.cc (paint_arc): Shift the coordinates to be relative
	to the clip region before passing in to MI.

1999-03-31  Havoc Pennington  <hp@pobox.com>

	* gnome-util.cc (guppi_gnome_init_library): Create the
	MarkerPaletteEdit dynamically; no Gtk in static destructors,
	causes flaming death.

	* markerpaletteedit.cc: Static object moved to gnome-util.cc

	* rgbdraw.cc: Changed to reflect changes to MI library.

1999-03-30  Havoc Pennington  <hp@pobox.com>

	* rgbdraw.h, rgbdraw.cc: Adapted to use the new MI scan conversion
	library; added exciting paint_arc() function, and the paint_line() 
	and paint_rect() calls now work properly.

        * plotutils.h (Color::fill_pixel): new method to fill an unsigned
	char[3] pixel based on the color

        * markerpaletteedit.cc: Add circle to the list of marker choices. 
	
	* canvas-scatter.cc: Declare RGB::Context outside of loop, this is 
	a heavier object now. Handle "Circle" marker type.

1999-03-29  Havoc Pennington  <hp@pobox.com>

	* scalardata.h, scalardata.cc: Added constructor to wrap an 
	existing RealSet.

1999-03-26  Havoc Pennington  <hp@pobox.com>

	* gnome-util.h, gnome-util.cc: Add stuff that was in guppi.cc

	* plotstore.h, plotstore.cc: Store a current tool box for each
	plot.

	* toolbox.h, toolbox.cc: Moved here from .. directory, 
	re-implemented to work with new setup.

1999-03-25  Havoc Pennington  <hp@pobox.com>

	* plotstore.h, plotstore.cc: Implement getting/setting current
	tool for each plot type.

	* plot.h: Remove get/set tool interface.

	* scatterplot.h, scatterplot.cc, barplot.h, barplot.cc: Updated to 
	reflect new location of current tool.

1999-03-24  Havoc Pennington  <hp@pobox.com>

	* plotstore.h, plotstore.cc: New object for registering plot types
	and tools/actions associated with them. 

	* plot.h: Remove actions() interface.
	
	* barplot.h, barplot.cc: Add ID member, remove actions().

	* scatterplot.h, scatterplot.cc: Add ID member, remove actions(),
	move all Action implementations into scatteractions

	* scatteractions.h, scatteractions.cc, baractions.h,
	baractions.cc: Action implementations moved here.

	* util.h, util.cc, gnome-util.h, gnome-util.cc: Add library 
	initialization code; registers plot types and actions.
	
	* scatterplotstate.h, scatterplotstate.cc: Add a stack of zooms,
	so the various actions can push/pop it.

	* tool.h, tool.cc: Change implementation of tools/actions so they 
	are not associated with a particular plot, and so they have 
	ID strings usable from scheme.

	* view.h: Add a comment about how using set<> is probably stupid 
	and vector<> would be better.
	
1999-03-23  Havoc Pennington  <hp@pobox.com>

	* Makefile.am: Build two libraries, libguppi-gnome and libguppi, 
	so there is a Gnome-free library available to work with 
	alternative frontends. 
	
	* checkdepends.cc: Empty program, linked with libguppi to be sure
	there are no Gtk/Gnome symbols in it.

	* gnome-util.h, gnome-util.cc: Util stuff that depends on Gnome.

	* Other files: Very small changes to permit library split. 
	Remaining problem: no i18n in libguppi without Gnome.

1999-03-19  Havoc Pennington  <hp@pobox.com>

	* Makefile.am: Add new files menuentry.h and markerpaletteedit.*

	* barplot.h, barplot.cc: Return empty menu entries list.

	* canvas-scatter.cc: Use new style and RGB stuff. Draw "intiles"
	in addition to "edgetiles." Draw styles.

	* markerstyle.h, markerstyle.cc: Require "checkout" of style to
	change it. Do model/view thing for Palette. Allow naming styles.
        Add style types and sizes. 

	* plot.h: Add menu entry interface.

	* plotutils.h, plotutils.cc: more Rectangle functions

	* pointtiles.cc, pointtiles.h: Implement intiles/edgetiles,
	previously it returned everything as an edgetile.

	* rgbdraw.h, rgbdraw.cc: Add clipping to the Context object;
	associate Context objects with a buffer; implement clipping in 
	the drawing routines; de-inline some stuff; take signed integer
	args and clip them. Rewrite some stuff so it works.

	* scalardata.h: Functions to return value at a particular sorted 
	index.

	* scatterplot.cc, scatterplot.h: Panning tools, menu entry for the
	palette editor. "Select-and-style" tool. Keep track of a minimal 
	superset of styles in use, so we can relatively quickly determine
	the maximum marker size.

	* markerpaletteedit.h, markerpaletteedit.cc: Dialog for editing 
	the palette of marker styles (and each individual style).

	* menuentry.h: Class representing a menu entry.
	
1999-03-12  Havoc Pennington  <hp@pobox.com>

	* tool.h, tool.cc, plot.h, plot.cc: Rename all the Tool stuff to
	Action, and create a new Tool class representing a group of Action
	bindings.

	* barplot.h, barplot.cc, scatterplot.h, scatterplot.cc: Changed to
	reflect new tool setup. Added Edit tool to scatterplot for pulling
	up the properties dialog. All sorts of assorted rearrangement.

1999-03-12  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc: Added Telescope tool to zoom in on a particular
	point.

1999-03-11  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc, scatterplot.h: Add a way for tools to grab all 
	events and keep other tools for taking effect.

	* ezrubberband.h, ezrubberband.c: Keep these in sync with the
	ezpaint master copy. Fixes some bugs.
	
1999-03-10  Havoc Pennington  <hp@pobox.com>

	* barplot.cc: Add some status display.

	* plot.h: Statusbar interface stuff.

	* scatterplot.cc: Add crop stack and un-crop feature. Some
	statusbar stuff.		

1999-03-05  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc: Fix reverse-on-zoom bug.
	
	* canvas-axis.cc (guppi_axis_render): Fix vertical axis screwup
	(reorder points before drawing them).

	* canvas-scatter.cc (guppi_scatter_render): Don't compose affine
	and transform together.
	
1999-03-05  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc: Implemented the axis-zoom (AxisShrinker) tool.

	* ezrubberband.h, ezrubberband.cc: Imported from ezpaint, so we
	don't rely on that library for now.	

1999-03-05  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc: Add event handling to the tools.

1999-03-04  Havoc Pennington  <hp@pobox.com>

	* tool.h, tool.cc: new interface, for tools a container app should
	display on behalf of the embedded plot, and some utility junk 
	to go with it.

	* plot.h: add tool-related functions, pure virtual
	
	* scatterplot.h, scatterplot.cc: Add new plot methods

	* barplot.h, barplot.cc: Stub new plot methods
	
1999-03-03  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc (change_styles): Request redraw if styles change.

	* scatterplotstate.cc (IndexVector::reserve): Properly set n_,
	and do nothing if the new size is the same as the old size.
	(ScatterPlotState::set_style): Always re-update the number of 
	points; can't hurt.

	* markerstyle.cc, markerstyle.h: Use guint32 for marker ID's, so
	we don't get surprises on funky architectures.

1999-03-02  Havoc Pennington  <hp@pobox.com>

	* Makefile.am (INCLUDES): Turn off DEBUG_RC for now

	* scalardata.cc, scalardata.h: The SortedPair object now maintains
	a reverse-lookup table as well as a lookup table, chewing up even 
	more RAM. We are getting out of control.

	* canvas-scatter.cc (guppi_scatter_render): Remove old non-tile
	code that was commented out. Changes to reflect MarkerStyle stuff.

	* scatterplot.h, scatterplot.cc: Watch for change_styles() event;
	use state_->npoints().
	
	* scatterplotedit.h, scatterplotedit.cc: Watch for
	change_styles() event

	* scatterplotstate.h, scatterplotstate.cc: Keep MarkerPalette ID
	numbers for each point in the plot. This is fairly complicated.
	Add npoints() method and methods to support MarkerStyle stuff.

	* markerstyle.h, markerstyle.cc: Move MarkerStyle here, and add
	MarkerPalette to keep the master array of MarkerStyle
	
	* plotutils.h: Remove MarkerStyle class

1999-03-01  Havoc Pennington  <hp@pobox.com>

	* vfont.cc, state-print.h, state-print.cc: Started to fool with
	printing and fonts this morning, but didn't get very far.
	
	* canvas-axis.cc (guppi_axis_render): Turn off the debugging rectangles.

	* scatterplot.cc (info): Use the proper sorted data, it was bad 
	broken before in a stupid way.

	* scatterplotstate.h, scatterplotstate.cc: Maintain a SortedPair
	object.

	* scalardata.cc, scalardata.h: Implement object to lock two 
	ScalarData together and sort one of them maintaining ordered
	pairs, tracking any changes to the original vectors.
	
	* plotutils.h: Add equality operator for Color. Add MarkerStyle
	object representing a scatter plot or other marker's appearance.

1999-03-01  Jon Trowbridge <trow@emccta.com>

	* Derive Model subclasses from ::Model, to satisfy egcs 1.1 and be
	valid C++.
	
1999-02-26  Havoc Pennington  <hp@pobox.com>

	* printer-gnome.cc: Fill in the functions, typing work.

1999-02-26  Havoc Pennington  <hp@pobox.com>

	* printer.h, printer-gnome.h, printer-gnome.cc, vfont.h: New files.

	* scatterplotstate.cc (recalc_ticks): Use rint() for rounding.

	* plotutils.h (Axis::horizontal(), Axis::vertical()): New functions.

	* plotutils.cc (x_compose): Fix stupid bug (using pixels per unit
	for translation). Another problem is that pixels per unit can be 
	negative, flipping the coordinate system; affines don't like this 
	I don't think.

	* barplotstate.cc (recalc_layout): More EAST-WEST mess.

	* plotutils.cc (parallel_sort): Oops - this didn't like the N == 1
	case. Fix it for real, but also just return immediately if N == 1.

	* canvas-axis.cc (guppi_axis_update): I have some kind of
	EAST/WEST dyslexia.

	* scatterplotstate.cc (recalc_layout): I had EAST, I meant WEST

	* rgbdraw.cc (paint_line): Bail out if the line is totally off the 
	screen.
	

1999-02-25  Havoc Pennington  <hp@pobox.com>

	* plotutils.cc (round_numbers): Fix stupid typo.

	* Makefile.am (libguppi_la_SOURCES): Add rgbdraw.cc

	* plotutils.h: Add Affine::x_compose() and Affine::y_compose to 
	compose with just one dimension
	Affine::Point() : default constructor.

	* rgbdraw.cc (paint_line): Partially implemented.

	* plotutils.cc (generate_ticks): New function to automatically
	create ticks for the axis, leaving any "manual" ticks unchanged.

	* scatterplotstate.h, scatterplotstate.cc: Generate ticks.
	
1999-02-23  Havoc Pennington  <hp@pobox.com>

	* scatterplot.cc (info): Fix typo - I had X instead of Y when
	retrieving data values.

	* scatterplotstate.cc (set_x_data, set_y_data): Return immediately
	if the data being set is the same that's already in set.

	* scatterplot.h, scatterplot.cc: I was on some kind of drugs, 
	manually shifting each piece of the plot to match the X,Y position
	instead of just moving the canvas group.		

	* barplot.h, barplot.cc: Fix the same brain-damage, use the
	CanvasGroup.
	
	* canvas-scatter.cc (guppi_scatter_render): Good thing I bought 
	"Introduction to Computer Graphics" and learned that the order of 
	affine composition matters. Fix order so it works.

	* scatterplotedit.cc (set_state): Update the option menus.

	* canvas-scatter.cc (guppi_scatter_update): Canonicalize the
	bounding rectangle.		

	* plotutils.cc (round_numbers): Properly scope round_number(), and
	add canonicalize_rectangle() function.

	* scatterplotstate.cc: Set up default bounds for the axes; reverse
	transform to account for X's upside down coordinate system.

1999-02-22  Havoc Pennington  <hp@pobox.com>

	* data.cc: Switch to RC object for refcounting.

	* view.h: Add a view_known() method.

        * scatterplot.h, scatterplot.cc: Add scatterplotedit capabilities.
	Properly handle the case where data is plotted vs. itself.
	
	* barplot.cc (release_state): Remove redundant edit_.set_state().

	* scatterplotedit.h, scatterplotedit.cc: Add files and implement.
	
	* barplotedit.cc (edit): Set policy on dialog so you can resize
	it.

	* callbacks.cc, callbacks.h: Utility class to manage 
	*very* simple callbacks.

	* barplotedit.h, barplotedit.cc: Convert to use DataOption
	
1999-02-19  Havoc Pennington  <hp@pobox.com>

	* view.h: Play around with partial specializations and blah blah; 
	reduced library size by 10K or so, but caused such code cruft that
	I #if 0'd the new stuff.

1999-02-19  Havoc Pennington  <hp@pobox.com>

	* plotutils.h: Don't add 0.5 in Transform::transform() 
	since we no longer cast to int.

	* scatterplot.h, scatterplot.cc: Actually display the axes, add 
	GuppiAxis members. Become a Data::View, so we can respond to 
	changing data values.
	
1999-02-19  Havoc Pennington  <hp@pobox.com>

	* scatterplot.h, scatterplot.cc: Reflect changes to the state
	object.

	* scatterplotstate.cc (destroy_model): Since we only view one 
	model now, use this function.

	* scatterplotstate.h, scatterplotstate.cc: Remove Data::View as 
	superclass; we don't need to monitor Data. Move to barplot-style
	axis-layout stuff.

	* barplot.cc (change_size): Send change_size message to plot_model.

1999-02-18  Havoc Pennington  <hp@pobox.com>

	* barplotstate.h, barplotstate.cc, barplot.h, barplot.cc: 
	Initial hacking on drawing an Axis for the bar plot.
	Will want to re-do scatter plot the way I've done the
	bar plot.
	
	* plotutils.h: Change Rectangle to be an x,y,w,h instead of four
	coords. Add Rectangle::translate().

	* canvas-axis.cc: Implement this canvas item. 

1999-02-18  Havoc Pennington  <hp@pobox.com>

	* barplotstate.h, barplotstate.cc: Support for getting/setting the
	plot size; new View method, change_size. Views updated accordingly.
	Add const_iterator; change Bar object to hold an index into a data
	object, rather than a copied value. Add concept of baseline to the 
	bar plot. Don't generate bars for off-plot values.

	* barplotedit.h, barplotedit.cc: Color for background
	
	* barplotstate.h, barplotstate.cc, barplot.h, barplot.cc:
	Background is now a Color

	* plot.h, plot.cc: De-inline ref/unref.

	* scatterplotstate.h, scatterplotstate.cc, scatterplot.h,
	scatterplot.cc: Store background as a Color, not a string.		

	* plotutils.h: Support packing a color into a single int, and unpacking.

1999-02-17  Havoc Pennington  <hp@pobox.com>

	* refcount.h: count() method, hide copy/assignment so it doesn't
	accidentally happen.		

1999-02-17  Havoc Pennington  <hp@pobox.com>

	* dataoption.cc, dataoption.h: Option menu to choose data from the
	store.

	* scatterplotedit.h: New file.

1999-02-16  Havoc Pennington  <hp@pobox.com>

	* testrgbdraw.cc: New file, copied from testrgb. Will use to test 
	my RGB drawing functions.

	* scalardata.cc (xml): Use g_snprintf to convert double to string,
	since RealSet doesn't have that now.

	* plotutils.h: Add has_alpha() method to Color.

	* rgbdraw.h: Add a Context object.

	* plot.h: Add size-negotiation stuff; this will work nicely with
	Gtk and Bonobo, I hope.

	* scatterplot.h, scatterplot.cc, barplot.h, barplot.cc: size
	negotiation.

	* scalardata.h: Make copy/equality private; not allowed.

	* data.h: Same.
	
1999-02-12  Havoc Pennington  <hp@pobox.com>

	* refcount.h, refcount.cc: Reference count class (meant to be a 
	member, not a base class).	
	
	* plot.h: Add reference count. Add unrealize() virtual function.

	* pointtiles.cc (tiles_in_rect): Change interface to return edge
	tiles and completely contained tiles separately. Not yet 
	implemented.

	* plot.h: Add new virtual functions, set_x(), set_y(), x(), y() to
	manage the item coordinates of a plot.

	* barplot.h, barplot.cc: implement new position functions, unrealize().
	
	* scatterplot.h, scatterplot.cc: Add implementations for set_x(),
	set_y(), unrealize().	

	* canvas-scatter.cc (guppi_scatter_update): Do the bounding box
	properly (double-to-int conversion).	

	* plotutils.h: Ensure that the pixels per unit and offset are
	never completely insane, by enforcing a minimum bounds.	

	* scatterplotstate.cc (ScatterPlotState): Moved default X and Y
	data setting here, rather than scatterplot.cc
	(checkin_y_axis,checkin_x_axis): Assertions were backward.

1999-02-11  Havoc Pennington  <hp@pobox.com>

	* plotutils.h (Color): Default to 255 alpha not 0
	* scatterplot.cc: Make changes to start using real data and not 
	made-up debug data. Track ScatterPlotState.

1999-02-11  Havoc Pennington  <hp@pobox.com>

	* plotutils.h: Move Transform before Affine and add function to
	compose an Affine with two Transforms.

	* canvas-scatter.cc (guppi_scatter_update): Convert to use
	transforms; also fix a couple of bugs. I had a sleep(1) in there 
	for debugging, which was making things sluggish. Oops. 
	(guppi_scatter_bounds): Convert to transforms, generally cause
	breakage.

	* scatterplot.h, scatterplot.cc: Changes to reflect canvas-scatter 
	fixes.
	
1999-02-10  Havoc Pennington  <hp@pobox.com>

	* canvas-scatter.h: Remove "bounds" callback, change info callback
	to use transforms instead of affine.

	* plotutils.h: Add a Transform class copied from gtk--plot, Affine
	is not going to work for what I was doing.

	* scatterplotstate.h: Remove the change_zoom() model-view message,
	because the axis and size change messages cover it.

1999-02-10  Havoc Pennington  <hp@pobox.com>

	* scatterplotstate.h,scatterplotstate.cc: Remove the "window"
	stuff and replace it with new Axis stuff.
	Add "zoom" attribute.
	Add "size" attribute.

	* scatterplot.h, scatterplot.cc: Reflect changes in ScatterPlotState.

	* plotutils.h: Bunches of new classes: Tick, Axis, Color. Go ahead
	and bang these out so I don't have to stop later.

1999-02-09  Havoc Pennington  <hp@pobox.com>

	* scatterplotstate.cc (set_data): Return immediately if new data
	== old data.

	* barplotstate.cc (set_data): Ditto.
	
	* plot.h (realize): Take a group as arg, not a canvas.
	* barplot.cc (realize): Realize to a group rather than a canvas
	* scatterplot.cc (realize): same.

1999-02-09  Havoc Pennington  <hp@pobox.com>

	* data.cc (Data): Gee, reference counting works better if you
	initialize the refcount variable.
	(Data(DataType)): And it works even better if you do so in both 
	constructors, not just the default one...

	* barplot.cc (release_state): Fix to previous fix: set state of
	BarPlotEdit to 0 anytime we release a state, not just in the
	destructor.

1999-02-09  Havoc Pennington  <hp@pobox.com>

	* barplotedit.cc (set_state): Permit setting state pointer to 0

	* scatterplotstate.cc (~ScatterPlotState, set_data): Properly unreference
	the data objects.

	* barplotstate.cc (~BarPlotState, set_data): Properly grab and
	release data objects.

	* barplot.cc (release_state): Always remove our view, even if we
	are deleting the state.
	(~BarPlot): Set state of BarPlotEdit to 0 before destroying state; 
	prevents memory corruption from BarPlotEdit destructor. 

	* scatterplot.cc (release_state): Same.
	

1999-02-08  Havoc Pennington  <hp@pobox.com>

	* plotutils.h: New Rectangle class, stores a rectangle (I feel
	like a textbook)

	* barplot.cc (~BarPlot): Fix typo (ref instead of unref)

	* scatterplotstate.h, scatterplotstate.cc: New files, state
	representation for scatterplots.

	* scatterplot.h, scatterplot.cc: Start blowing away cruft,
	replacing with a real implemenation.

1999-02-08  Havoc Pennington  <hp@pobox.com>

	* pointtiles.cc: Some const fixes, start on the
	update-single-point method.
	
	* datastore.cc (merge_xml): Use g_ustrcmp to chill some warnings.

	* canvas-scatter.cc (guppi_scatter_reset): New function, rebuilds
	the tiles.

	* canvas-scatter.cc: Remove some debug cruft.

	* barplotstate.h: Add new method for Data::View

	* barplotedit.cc (change_data_values): New method required by DataStore::View.

	* data.h: New change_values() method required for views; unlike
	the previous one, passes a vector of changed indices for
	efficiency.
				
	* datastore.h: New method for views, analagous to the one added to Data.	

	* xmltags.h (g_ustrcmp): New macro, casts args to const gchar*
	before passing to strcmp, since gnome-xml's use of unsigned char 
	causes huge warning spew.

	
