#### THIS file should contain old ChangeLog entries.


DONE (starting August 7, 1991):

	- add :origin arg to synth ops (make-ramp etc) to choose location of pedestal

	- fix to with-result: call set-not-current AFTER executing body, since
	  it will cause picture slots to be re-auto-computed...
	- added Emacs "apropos" command "C-c C-h", and changed the
	  binding for "describe" to be "C-c C-i" (info).
	- boost-contrast by factors of 1.5

	- Changed all definitions of reset-picture-defaults.  They now modify the
	  initarg list, which is then passed to the standard reinitialize-instance
	  method.  Also fixed reset-compound-picture-defaults methods in 
	  flipbooks so that they can force non-independent-independent parameters
	  to be reset (eg. user switches from independent to non-independent).
	  NOTE: All old code is preserved in old-source/reset-picture-defaults.lisp.

	- moved pathnames from lucid-defsys.lisp into new file site-paths.lisp for
	  easier maintenance of lucid-defsys.lisp...
	- wrote copy-swapped-32bit to speed up bit image blt'ing.
	- All matrix ops in C (EJ).
	- sped up quantize routine.

	- interactive slice of image-sequence.
	- history-of --> history-sexp (returns an S-expression that constructs the thing)
	- wrote constructor function
	- make-list-from-array --> list-from-array
	- wrote/tested with-local-arrays
	- improved emacs describe (C-c C-h).
	- Got rid of many of the SIMILAR methods (wrote generic one on viewables).
	- destroy pane now does a c-error if there are pictures on the pane.
	- set-not-current on pictures no longer sets current slot to nil -- this was 
	  a bug introduced to fix the non-recomputation bug!!!

Orphans:
	- *auto-destroy-viewables*  --> *auto-destroy-orphans*
	- *auto-destroy-orphans* is used when you set a symbol-value that
	was bound to a viewable, pop a picture off the stack, destroy a 
	superior  (these are places where OBVIUS can catch orphans being created).
	If *auto-destroy-viewables* is nil, warnings are given.
	- Wrote orphaned-viewable-p (in viewable.lisp) to centralize this testing.
	- Moved the orphan destruction from (destroy viewable) to
	notify-of-superior-destruction.
	- Created global *protected-viewables* to allow with-result to protect
	the result from auto-destruction.  This is also checked in ogc.
	- Fixed with-local-viewables to a) Destroy orphaned inferiors,
	b) protect the returned viewables from auto-destruction or ogc, and 
	c) give an error if user tries to return one of the local viewables!!
	- Described the orphan situation in the manual.

	- Fixed graph labels!
	- Fixed graph of one-d image problem: vectorize the data!
	- Changed hardcopy to use fixed-width "Courier" font on graphs to match screen.
	- Set status to be "error occured: see listener" 

---------------------------------------------------------------------------------
DONE (starting March 4, 1991):

	- patches: numbered and loaded sequentially.  Parameter sets
	min patch to be loaded.

General pictures:
	- reset-picture-defaults called by shared-initialize.  reinitialize-instance
	called from setp and dialogs.  get rid of set-parameter!
*       - Check set-not-current methods.
*	- Reinitialize instance of picture, after set-not-current, does not reset
	  the picture parameters as it should (e.g., setf iref a pixel in an image,
	  then refresh, does not change scale and pedestal params).

zoom:
	(setp zoom t) doesn't work.  [DONE]
	Make it work on 1bit displays (of gray or bit-images). [DONE]
	Make it work on graphs	

Graphs:
	- integer zoom, position message.
	- Rewrote with general coordinate-transform mechanism.
 	- add aspect-ratio parameter (complements zoom)
	- point-graph looks like bar graph.  
	- graph of constant image  breaks.  (make sure to coerce)
	- graphing 1d bit-images breaks.

flipbooks
        - Can't set sub-display-type for image-sequence to be dither
        - Must be able to set sub-parameters of flipbooks at display
        time (as well as from setp).  SOlution: add a sub-parameters
        slot (get rid of sub-display-type and independent-parameters).
        Problem: how do we set individual sub-parameters?  1) special
        arg to setp 2) another function (sub-setp).
        - flipbooks should change pane-of sub-pictures when picture is
        moved to another pane!  (otherwise position message breaks!)
        - display-seq: change display-seq to run in a background
        process so that multiple sequences may be viewed at the same
        time!  (Also, this will prevent the main repl from being
        hung!)  Currently, the main process continually checks a flag
        in the flipbook, that is reset by the event handler after any
        mouse click.  Make the background process do that instead.
        use timer.


Emacs (cl-shell): 
	- beter describe function.
	- Improved history mechanism.
	- Improved pop-up help.
	- History yank mechanism.

X interface: clean up SOLO stuff.
	- Currently, we always make a new solo::image and destroy the old 
	one whenever it is out of date.  We need to do this with some
	picture types (e.g., graphs, vector-fields, pasteups) because
	the size of the picture's data array may have changed (e.g., 
	rearraged the pasteup or graphing into a bigger pane).  But, this
	is wasteful for other picture types:
		present gray image
		present bitmap bit-image
		present bitmap image
		present flipbook image-sequence
		present bit-flipbook image-sequence
	- initialize-X-window-system, generalize to deal with multiple
	screens, screen depth, and screen X colormap (visual) mode.

foreground/background issue: 
	- Render should set the cmap.
	- clear bltables in make-bltable (?).  Fill with background
	color of screen.
	- Bit-image display is busted
	- We need a way to set the background color for the screens
	which should be used for clearing ALL panes.  
*	- Reverse video on bitmaps of bit-images (running openwindows).

screens:
	- need to be able to change a) gray-shades, b) gamma, c)
	dither (nil/t/num), d) foreground/background (of all panes!).
*        - LispView display is created when loading x-mouse.lisp!!! This is a bug, since
        when you save a world, it will have bad pointers into memory!  Figure out
	how to do it in an initialization function (i.e., don't create interests
	in file).

colormaps:
	- How does the colormap get set up? How does it interact with the
	pre-existing X colormaps?  Can we minimize the clobbering of
	other applications (ie, if we need to clobber colors already
	allocated, then clobber those that are closest to gray or at
	least closest in brightness).  (i.e. don't destroy reserved colors).

Dialogs:
	- kill picture dialogs on display error.
	- Kill picture on no present method error
	- Pop-up documentation boxes (using meta-left mouse).
	- Color entry items (take keywords, produce lispview colors)
	- Buttons: apply, revert, defaults, exit.
	- Picture dialog should go away if picture goes away!
	- screen parameters: gamma, num-gray-levels, background, foreground.
	- Fix vbl defaults dialog for histograms/df's

mouse
	- Allow some mouse bindings to change depending on the type of
	picture in the pane.
	- Right mouse should be draggable -- pixel values should be
	displayed interactively as with xmag! (use code in x-drag).
	- proper justification of mouse-doc string.
	- Make sure doc works with emacs (no control panel)
	- Add boost-contrast, reduce-contrast (with histogram).
	- put hardcopy with destroy-viewable

images:
*        - resolve 1d/2d issue: 
	DONE: initialize instance on images converts to 1d-image if the data is
	a vector or if it is a 1xN or Nx1 array.  By default, 1d-images are
	displayed as graphs.  Crop and paste work as expected on 1xN and Nx1
	arrays.  Crop is also defined for vectors and paste is defined for
	vector/array combination (pastes the vector into a row of the array. 
	Synth functions work only on 2D arrays.  In summary, most everythin is
	done with 2D arrays, but it all works with vectors as well.  -DH
*	- crop should not work if you pass numbers (no keywords).

filter: 
*	- make-filter MUST copy an array arg!

Wrote C code to zoom 1bit bltables: internal_replicate_1bit,
internal_subsample_1bit.  It doesn't look so good, but it will do for
now (eventually, alter the dither code to do up- or down- sampling).

Generic patches interface loads patch files from patches directory in
numerical order.

Fixed up colormap stuff: Got rid of default-colormap in screen.  The
X-screen now holds a gray-lut, and (settable) size and gamma
parameters for it.  Can now reset the gray-lut (but need to add dialog
access).

Added generic-fns.lisp file to set up documentation strings and
arglists properly.

----------------------------------------------------------------------------------
DONE (starting Jan 24, 1991):

Fixed OGC: There was a major bug!  Also now unbinds lisp:* etc.
When gc'ing, stop other processes!

FIxed package references:
  Replaced sys: with lcl: in memory.lisp
  Added MP: for all multi-processing calls
  use lcl:record-source-file in source-file-extensions
  use lcl:cd and lcl:run-program  (in lucid-defsys)

Moved top-level surface-plot code to bitmap.lisp, C interface to lucid-ffi.lisp

Got rid of :-> args in make-<vbl> commands.  Allow :name only!

Get rid of *default-number-of-bins*

define-c-function --> def-foreign-function

Added stuff to make an index for the documentation!!!

----------------------------------------------------------------------------------
DONE (up to Dec 19, 1990):

- Put types into settable slots of pictures.  THese will be used by the dialog boxes.

- zoom on gray takes t, a number, a pair of numbers, or nil.

- If no history passed to with-result, then history is not modified.  This way, 
history can be the history of the sub-calls within a function!

- wrote first-pass widgets (in x-widget.lisp) interface.

- finished shifting code from make-<vbl> functions into
initialize-instance methods.

- added :sub-model-spec to initargs of initialize-instance on viewable-sequence.
  this was a bit hairy and still needs further testing.

- added greater-than, etc to sequence file.

- Started cleaning up foreground/background slots.

- zoom on vector-fields

- New object: dither.

- edited hacking.tex, release-notes, install.tex.  Wrote INSTALL.

- Created lucid-defsys.lisp.visci, lucid-defsys.lisp.nasa.
lucid-defsys.lisp is now a link.

