Wed Oct 2 13:31:08 1996 Eero Simoncelli * Incorporated: - signum. method in user-macros.lisp - setd macro (setq, destroying previously bound viewables) - fixed shift-by-pi on filters - image-from-file: can spec xsize or ysize. - minor mods to reset-pictue-defaults on (gray vbl) Fri Feb 17 09:06:10 1995 Eero Simoncelli * cl-shell: - v19 patches - example.emacs upgraded * Included file README.upenn as an example of a helpful beginning user file. Wed Feb 15 08:59:42 1995 Eero Simoncelli * Pasteups: - Changed slot name: :pasteup-format -> :layout - Default :layout is :square - Fix dragging redisplay bug! - Image matrices can now take format :square. - Gaussian/Laplacian pyramid code rewritten: can also take :square! - Added methods for QMF's and Steerable pyramids. - adjusted scale/pedestal computations for pyramids Fri Feb 10 17:36:10 1995 Eero Simoncelli * fixed color entry bugs in dialogs (eg, background color of screen) * Cleaned up/rewrote most of the PYRAMID code: - NASTY bug fixed: pyramid was not being removed from superiors-of list of original image. Be careful with the delete function! - eliminated :original image slot. Replaced with original-dims. - default number of levels is now the MAXIMUM POSSIBLE (this is harder to figure out than 0, so we should provide it!) - Put :bands, :levels, :low-band keywords back into the collapse method. - Gaussian pyramids can now be collapsed (but only one level may be collapsed). - QMF's moved to a separate file added access-vert, access-hor, access-diag methods wrote display code (including auto-scaling). - steerpyr: defclass moved to viewable-classes.lisp got rid of all terminal band stuff (for old system diagram) added initial-low-filter. moved filters to a /data/steerpyr-filts.sbin wrote display code Wed Feb 8 18:24:04 1995 Eero Simoncelli * SOLARIS port of LispView: Built new LispView distribution, and included it in the obvius source tree (directory is lispview1.1). Added Wilbur's patches to get it to compile under solaris. Biggest change is that solaris foreign functions do not begin with an underscore. See lispview1.1/README.obvius.patches for details. Mon Jan 23 10:52:38 1995 Eduardo-Jose Chichilnisky (ej at white) * Removed float-arrays-p from array-ops. Put one into mcl-hacks and one into lucid-hacks (they're different). Changed gamma.lisp (make-gamma-lut) so it only checks for integer or real data types, rather than specifically for 8bit, 32bit, single- or double-float. This makes more sense for different architectures. Thu Jan 19 11:49:59 1995 Eduardo-Jose Chichilnisky (ej at yellow) * Added implementation-independent array type checking to deal with MCL. Changed make-gamma-lut and made macro in array-ops (float-arrays-p) dependent on system. Sun Jan 15 14:38:38 1995 Eduardo-Jose Chichilnisky (ej at gold) * Fixed bug with crop that was not dealing with overhang. EJ & DH. There was no error checking for the size of result, only for the size of source, for destructive modification of passed result array. Fri Dec 23 12:57:33 1994 Eduardo-Jose Chichilnisky (ej at magenta) * Add qf (quadratic form) functions to array-ops and c code, also byteswap16 and power-rows. Thu Dec 8 10:11:55 1994 David Heeger (heeger at violet) * Stop exporting filter-list from steer.lisp Thu Jun 9 15:16:16 1994 David Heeger (heeger at violet) * Commented out history in save-image. It's out of hand --- sometimes the history is bigger than the image. Tue Jun 7 10:15:17 1994 David Heeger (heeger at violet) * Added Wilbur's new version of with-status-message. It nests messages, such that an outer message is redisplayed when an inner message block terminates . Mon May 30 16:27:20 1994 David Heeger (heeger at white) * Add make-inverse-discrete-function, that takes a df as input and produces the inverse function after checking that the input is monotonic-increasing. * Added verify-monotone-increasing as a method on arrays (got rid of the function version from gamma.lisp). Mon May 23 17:44:48 1994 David Heeger (heeger at violet) * Added mul methods on complex-image and complex-number Tue Mar 29 22:58:22 1994 David Heeger (heeger@violet) * Fixed bug in singular-p. * Changed make-quadrature-steerable-basis to make complex-images rather than image-pairs. Tue Mar 29 11:40:43 1994 Eduardo-Jose Chichilnisky (ej at red) * Fixed SVD to only warn (rather than return NIL) when Linpack's C code complains. This was due to a case I found when Linpack's code returns something slightly wrong, but it seemed better to warn than to cause a crash by returning NIL. * Fixed minimum and maximum on lists to return positions, like array methods. Added minimum-location and maximum-location on lists. Sat Mar 26 12:40:18 1994 David Heeger (heeger@violet) * Fixed bugs in col-space, row-space, col-null-space, row-null-space in svd.lisp. Fri Mar 25 15:43:49 1994 David Heeger (heeger@violet) * Added scatter-frob viewable and make-scatter methods to drawing.lisp. This used to be defined in tutorials/psychophysics/scatter. * Added cumulative-normal and inverse-detection-normal to statistics.lisp. This used to be defined in tutorials/psychophysics/stuff. * Added multiple-sort methods to misc.lisp. This used to be defined in tutorials/psychophysics/stuff. Thu Mar 24 13:42:39 1994 David Heeger (heeger@violet) * Added internal8_circular_shift imops.c, lisp definition in lucid-ffi.lisp, and call it from circular-shift in array-ops.lisp Mon Mar 12 09:10:54 1994 Eero Simoncelli (eero at blue) * Finished porting steerable pyramids. Includes new filters, slightly modified circuit diagram. * Added llse-filter-design.lisp: code to do weighted least-squares filter design. Wed Feb 16 11:56:41 1994 David Heeger (heeger at violet) * Copied C source back to Sun from the Mac. Here's what's been added on the Mac and/or changed on both: chartohex: - get rid of the , include obv.h instead obv.h: added to deal with machine dependencies - reference to pi needs to depend on machine (ifdef MPW or whatever) - need to put this file on the sun - included obv.h in fft.c, imops.c, matrix.c, chartohex.c - #include for memset(), needed for imops.c - #include for rand(), needed for imops.c - #include for fprintf() , needed for imops.c - conditional include of on mac (something else for SUN) to deal with lseek() in chartohex.c mpw-hacks.c: added to take care of C functions missing on the Mac MakeFile-mac: - inserted compiler option -d float=double to make all floats be double. This appears to work, at least tested with matrix.c (internal-dot-product) - tiff-access.c causes an undefined TiffPrintDirectory; so we left it out - This file MUST be renamed MakeFile before compiling in MPW. Wed Feb 16 11:56:41 1994 David Heeger (heeger at violet) * Moved lucid-window-init.lisp, lucid-obvius-init.lisp, mcl-window-init.lisp, and mcl-obvius-init.lisp into directory. This makes it easier to copy new versions to the mac. Each time a new version is copied, need to update/reconstruct: mcl-window-init, mcl-obvius-init, mcl-site-init, and mcl-site-paths. At least these four files are now all in the same directory. Wed Feb 16 11:56:41 1994 David Heeger (heeger at violet) * Notes about mcl-*.lisp files: mcl-defsys.lisp: - Copy and Paste are taken by CCL. We unintern and unexport them in mcl-defsys.lisp - Use clos as a nickname for ccl package. Every reference to clos package must have a double colon. mcl-clos-extensions.lisp: - Had to define the following functions because MCL 2.0 doesn't support everything they should (see p. 608 of MCL docs): slot-definition-initform slot-definition-initargs class-default-initargs These definitions are unsupported hacks. Worry about this for future releases of MCL. - Changed (nth 2 thing) to (nth 1 thing) in get-default and in get-defaults because lucid's initargs are triplets whereas MCL's initargs are pairs (at least for the time being, note that slot-definition-initargs is one of the above hacks). - Changed set-default, dumped initfunction since it's not used in MCL. There are 3 cases. (1) If it's an initarg, change the initarg. (2) If it's a direct slot, change the initform in the slot. (3) If it's an inhertited slot, add an initarg. Couldn't figure out how to implement the 2nd case, so came up with a ***hack*** for the time being; we simply add an initarg (i.e., treat case 2 the same as case 3). This works fine but... Eero can fix it later. mcl-screen.lisp (modified from lv-screen): - Not dealing with blting yet, so I didn't deal with find-color and registered colors. Color maps don't appear to be supported by MCL. This is going to be a bit of a hassle. - mcl-screen object (modified from 8bit-X-screen). - color slots in mcl-screen object and in picture objects must be either color name keywords like :black or triplets of floats between 0 and 1. For now, I left it the :type spec in the defclass t (i.e., no error checking on the type for the time being). - Wrote convert methods that convert rgb-list to and from encoded color fixnums. - setf background: didn't bother setting background of control panel because I'm not sure we're going to have one. - There are a bunch of functions and methods that I left out until we figure out how to deal with color maps: destroy method on screen set-gray-lut set-color-lut allocate-pseudo-colors - Decided that default background is :white. So needed to change default foreground of all drawing picture types to be :black. For now, put lots of set-defaults in mcl-obvius-init.lisp mcl-window.lisp: - foreground slot needed to restore fore-color after drawing routines like: draw-lines, draw-circles, etc. - no background slot in the pane. Get background color from screen. - take another look at the various methods for destroying a pane including: destroy methods (in mcl-window and pane.lisp), ccl::window-close (in mcl-window), and (setf (status pane) :destroyed) in mcl-window. - view-draw-contents still needs work (look at comment above defmethod). Works fine when window is selected, but wrong behavior when window is resized. Wed Feb 16 11:56:41 1994 David Heeger (heeger at violet) * Changes needed for consistency in mcl and lucid lisp-source: image.lisp: - Moved definitions of *max-print-vals* *y-print-range* and *x-print-range* to array-ops. viewable.lisp: - In mcl, exporting name from obvius conflicts with symbol already present in cl-user. Removed export of symbol 'name, because we could not understand or avoid the apparent conflict with a symbol in cl-user. - Function set already defined in CCL kernel. Added (fmakunbound 'set) above set redefinition. picture.lisp - reset-picture-defaults: added &allow-other-keys to arglist. The goal was to have all methods inherit this feature; seems to work. list-ops.lisp - added (fmakunbound 'union) above union redefinition fileio.lisp - Wrote mcl specific versions of: directory-p, trim-right-delimiter, and directory-path. Moved these to mcl-hacks and lucid-hacks. synth.lisp - patched make-uniform-noise, mod seed against most-positive-fixnum without this, seed was sometimes a bignum which busted ff call. Tue Feb 1 10:12:29 1994 Eduardo-Jose Chichilnisky (ej at gold) * Replaced statistics.lisp and numerical-recipes.lisp. The latter now implements the needed NR routines in Lisp, rather than linking C code. The former is cleaned up and calls those NR routines. Also removed ff calls from lucid-ffi.lisp. And updated installation instructions. Fri Jan 14 14:18:25 1994 Eduardo-Jose Chichilnisky (ej at gold) * Patched vectorize, which (amazingly) had a bug with using one of its keyword args. Tue Nov 30 17:35:15 1993 David Heeger (heeger at violet) * Fixed polar-to-complex in image-pair.lisp. Used to call sin. and cos., but these macros are not defined when this file gets compiled. Changed it to make calls directly to periodic-point-operation. Wed Sep 22 11:41:58 1993 Eduardo-Jose Chichilnisky (ej at magenta) * Fixed condition-number bug in svd. (was returning (sqrt (/ sn s1)), now returns (/ s1 sn) (Gill, Murray, & Wright, p 57). Also fixed :condition-number-limit keyword in matrix-inverse to correspond. Mon Sep 6 11:50:23 1993 David Heeger (heeger at violet) * Fixed copy-object on overlays. Had a serious bug that was causing Obvius to crash. Also made minor changes to hardcopy function to pass several args (:system-dependent-frob, :current) to copy-object, rather than setting them after the copy-object. Wed Sep 1 14:12:23 1993 David Heeger (heeger at violet) * Took out the following line from the hardcopy function. (unless (getf keys :zoom) (setf (getf keys :zoom) :auto)) This was busting hardcopies of overlayed polar-plots. Also, it's been bothering me for a long time and I'm certain it is wrong. We want hardcopy to be more or less wysiwyg, i.e., it should take the zoom parameter from the existing picture. With this line in there, it was over-riding the zoom parameter and always using :auto. If we decide to put it back, it was right after the remf keys lines. Thu Aug 26 14:44:01 1993 David Heeger (heeger at violet) * Overlay: Added code and fixed a bug to allow overlays of polar-plots. Tue Jul 27 10:34:37 1993 David Heeger (heeger at violet) * Changed save-image to return full directory path instead of nil. Wed Jul 21 15:20:13 1993 David Heeger (heeger at violet) * Fixed (factor) in misc.lisp. The loop macro had a non-portable syntax error "return num" that worked in lucid but crashes in MCL. Sun Jun 27 15:31:31 1993 David Heeger (heeger at violet) * Changed fft on discrete-functions to be more efficient: don't allocate new dfs if result df is passed. * Added pseudo-color and true-color picture types. * Added suppress-error keyword so that purge! will do its thing without stopping for continuable errors. Had to make minor changes to destroy (on viewables), notify-of-inferior-, notify-of-superior-, and purge! Sun Jun 27 08:17:53 1993 Eduardo-Jose Chichilnisky (ej at red) * Slightly Enhanced col, cols, (randomize arr num), (similar cons). Fixed regress, which depended on bug in (col). Fixed small bugs in identity-p, (matrix-inverse arr). Speeded up matrix-trace. Used patch-1.lisp for all but matrix-inverse, col, cols (in modules). Fri Apr 2 14:53:14 1993 Eero Simoncelli * Wrote plist-difference (like set-differnece, for plists) in lucid-clos-extensions.lisp. * Fixed some bugs reset-picture-defaults on flipbooks/overlays. * Added &allow-other-keys to reinitialize-instance on pictures. Thu Mar 11 14:55:56 1993 Eero Simoncelli * Ported qmf-pyramid.lisp (inherits from new pyramid class) * Modified Laplacian and Gaussian pyramids to inherit from pyramid. * Ported steer.lisp, steer-orient.lisp, steer-pyramid.lisp (w/Heeger) * made a lucid-site-paths.lisp.penn * made a make-world.penn * added ".mbin" for *binary-file-suffix* (fixed at stanford, too) * incorporated umask stuff/optimize-clos stuff from obvius-2.2/lucid-defsys * TRIED WITH LUCID-4.1: Had to fix all lambda lists: - commented out definition of symbol-macrolet in lucid-hacks.lisp - added &allow-other-keys to definition of similar in array-ops.lisp - added &allow-other-keys and :zero-val key to natural-log in list-ops.lisp - added &allow-other-keys to defs of div in list-ops.lisp and viewable-matrix.lisp - added &allow-other-keys to defs of gauss-out, gauss-in in viewable-matrix.lisp - added &allow-other-keys to defs of point-operation, hilbert-transform in discrete-function.lisp - used &rest to in (apply-filter thing filter). - added &allow-other-keys to (div polar-im polar-im) in image-pair.lisp Wed Feb 10 17:58:27 1993 David Heeger (heeger at blue) * Changed make-synthetic-image to be a method. When the first arg is a list, operates as before. When the first arg is a number, makes a one-d-image of that size and the function takes only one variable (x). * Fixed paste on vectors (in array-ops) so that it works for one-d-images as well. Did similar hack to fix correlate (also in array-ops). Wed Feb 3 13:53:55 1993 David Heeger (heeger at blue) * Incorporated obvius-2.2 patches into obvius-3.0. Lots of misc things. Important ones include: fix to viewable-matrix macros (patch-2.lisp); fixes to set-not-current (patch-7.lisp); various fixes to viewable-sequences. It looks like matrix-mul etc methods in patch-4.lisp were already incorporated. * Copied over steerable filters code from obvius-2.2 (not tested yet). * Copied over user-macros.lisp from obvius-2.2. Tue Dec 29 09:55:00 1992 Eduardo-Jose Chichilnisky (ej at violet) * Added almost-zero. Fixed non-float handling bug in negate. Added suppress-warning to natural-logarithm. Added logarithm. Added (paste vec vec) method. Improved efficiency of paste-rows, paste-cols. Gave vectorize and columnize modern x and y keywords. Added random-row and random-rows. Fixed bug in non-float behavior of product-of, and sped up. Allowed scatter-plot to use arrays (used to only handle vectors). Added logistic and inverse-logistic methods. Added sgn, half-square. Made coerce-to-float much more efficient. Added internal_cieluv and internal_cielab and added color.c to C libraries. Interface functions too. Lisp code that uses these not yet in OBVIUS. Wed Nov 11 15:11:47 1992 Eduardo-Jose Chichilnisky (ej at violet) * Added sum-square-error. Made vector-distance a function. Improved error-checking in cumulative-chi-square. Added logarithm method. Improved randomize methods. Added gaussian-randomize and poisson-randomize. Improved scatter-plot methods by adding scale keyword and making range defaults better. Added a bunch of check-sizes to array-ops code (not all though). Sat Oct 17 14:42:38 1992 Eduardo-Jose Chichilnisky (ej at green) * Spiffed up matrix-inverse to handle small singular values well. Default singular-value-limit is *machine-tolerance*. Multiple values are now returned that indicate the min and max singular values, and the dimensions of the result. Fri Oct 16 09:02:17 1992 Eduardo-Jose Chichilnisky (ej at ecru) * Fixed small bug in quadratic-decomposition, and added keywords to it. Removed (matrix-mul arr vec), which used to return an error. This op is valod when arr is a column vector. Took out the two other matrix-mul(-transpose) methods that always generated cerrors. Small enhancements to make-identity-matrix and make-diagonal-matrix. * Fixed up all (add/mul/sub/div)-(rows/cols) methods and appropriate C code, ffi code. Added vector-length-rows and quadratic-form functions and corresponding C code, ffi code. * Took LCL dependencies out of stepit.lisp and numerical-recipes.lisp. Tue Oct 13 10:20:14 1992 Eduardo-Jose Chichilnisky (ej at green) * Major changes to fitting code: stepit.c - made stepit re-entrant. Lots of changes. stepit.lisp - corresponding changes to lisp interface to stepit. Eliminated handling of lists, cumbersome and slow. Took out Lucid dependencies (see below) amoeba.lisp - spiffed up and added amoeba fitting routine. Slower and worse than stepit, but more is better. Made interface as close to stepit as possible. lucid-hacks.lisp - added routine for getting function pointers lucid-ffi.lisp - added new stepit interface functions Sun Sep 20 13:44:20 1992 David Heeger (heeger at blue) * Cleanup up files to make it easier to port. Renamed some files lucid-*.lisp and created lucid-hacks.lisp. * Eliminated retain-bitmap. No longer really necessary, and getting rid of it will make things easier to port. Got rid of x-drawable and postscript-drawable objects (no longer needed). Had to make a variety of changes to hardcopy.lisp (still needs to be cleanup up further). Fri Sep 18 15:38:29 1992 Eero Simoncelli (eero at ecru) * Modified load-patches (in lucid-defsys.lisp) to turn of redefinition warnings! Patch-4: * small contour-plot bug: called tolerance with :tolerance key * Default args to blur and gauss-out were different for images and viewable-matrices. * modified matrix ops on viewable-matrix to give error if result is one of the args. Also, put in checks for zero or one values when multiplying a viewable-matrix by a scalar matrix. Thu Sep 10 11:39:00 1992 David Heeger (heeger at blue) * Added overlays of scatter-plots. Wed Sep 9 11:54:27 1992 David Heeger (heeger at blue) * Viewable-matrix macros did not use gensym, so local variables were conflicting with user variables (esp in circular-shift, crop, paste). Eero provided new versions (patch-2.lisp). Mon Sep 7 10:44:49 1992 Eduardo-Jose Chichilnisky (ej at blue) * Added optional arguments and defaults to weibull functions. Added keyword to (copy arr) to allow forcing the copy to be allocated on the static heap (like with similar). Changed names of identity-matrix, diagonal-matrix to make-identity-matrix, make-diagonal-matrix, consistent with make-matrix. Changed keyword to displaced-matrix to be consistent with crop, paste, etc. Patch-1.lisp. Sat Aug 29 10:02:22 1992 Eduardo-Jose Chichilnisky (ej at blue) * NOW IN PATCH MODE * Added :-> argument to make-histogram, kept :name argument for back-compatibility. Added make-histogram methods on lists and arrays. patch-1.lisp Fri Aug 28 20:25:18 1992 Eero Simoncelli (eero at picadilly) * Modification to patch mechanism: patches are now loaded by make-obvius, and by initialize-obvius. Thus, if you save a new world, it will include all patches currently in the patches directory. At runtime, all patches newer than the last one loaded when you made the world will be loaded. - Wrote load-patches function to load patch files and increment *starting-patch-file* to be one greater than the last patch loaded. - Created site-patches.lisp file for sites to add their own patches (only loaded at runtime). Fri Aug 28 14:59:44 1992 Eduardo-Jose Chichilnisky (ej at blue) * Fixed up Numerical Recipes interface to use library (not .o files) * Sped up coerce-to-float a little with declarations. Tue Aug 25 20:04:57 1992 Eduardo-Jose Chichilnisky (ej at blue) * Fixed big bug in (sub im im-mat) which was doing same as (sub im-mat im), (as well as div, and sub and div on (arr im-mat)). Did this by adding a macro, unary-viewable-reverse-matrix-op in viewable-matrix.lisp. * Replaced (matrix) methods with (make-matrix). Replaced all calls. * Added dot-product, circular-shift on bit-arrays. * Altered correlate methods to allow :x :y :x-dim :y-dim keys for correlation over a restricted range. * Altered make-slice methods to take :x and :y args, leaving :x-coord and :y-coord for back-compatibility. Changed x-mouse to use :x and :y also. Sat Aug 22 18:32:15 1992 Eero Simoncelli (eero at oxfordcircus) * Fleshed out the "troubleshooting memory problems" section (in hacking.tex). * Wrote a brief "Adding menus and dialog boxes" subsection of the manual (in hacking.tex). * Save-image on sequences was saving the class incorrectly (eg, was writing "#", instead of "IMAGE-PAIR"). Fri Aug 21 15:48:35 1992 Eero Simoncelli (eero at oxfordcircus) * Uncommented the line in load-obvius that compiles all CLOS dispatch code, since this now seems to work with the production compiler. Also speeds things up noticably! CAREFUL: if you see errors about lucid:STRUCTURE-IS-STANDARD-OBJECT-P not being defined, this line is responsible. * Added keywords :optimizations and :brief-optimize-message to compile-if-necessary and compile-load functions. obv-compile-load and obv-compile now call these with *obvius-compiler-optimizations*. Documented these in release notes. * Added *obvius-compiler-optimizations* variable (in lucid-defsys) to hold optimization list for compiling all obvius source. Wrote current-compiler-optimzations function to return current settings. * Wrote WITH-COMPILER-OPTIMIZATIONS to deal with the compiler problem (Lucid has an undocumented variable that holds the current compiler optimizations). Thu Aug 20 17:03:01 1992 Eero Simoncelli (eero at picadilly) * Modified load-obvius and compile-obvius-modules to proclaim production compiler optimizations, and return to dev mode (the lucid default) afterward (see next comment). This is gross, but I don't know how to read current compiler settings. * Finally sorted out this lucid-ffi compilation confusion with EJ (we were getting "lucid:set-%ptr-float-ref not defined" bugs). We believe lucid-ffi will break if BOTH of the following things are true: 1) it is compiled in development mode, and 2) it is used from within the same lisp world that it was compiled. Changing condition (1) always seems to fix it. Changing condition (2) seemed to work in some cases, but was more complicated. Gotta love this Lucid Lisp. ALSO, the problem we had earlier of gc'ing when in foreign function calls ONLY HAPPENS WHEN YOU USE THE DEVELOPMENT COMPILER. Clearly, the answer to all of this is to use production compiler.... * Small mods to display (in viewable.lisp): 1) Modified the meaning of *auto-update-pictures*. It controls whether pictures that are re-displayed by calling display on a viewable with an existing picture are re-computed (used to recompute pictures on any call to draw-pane, such as cycle-pane, or move-picture) 2) Added new variable *preserve-picture-pane*. If non-nil, when display finds an existing picture of the viewable, it is NOT moved to the current pane, but remains on the same pane. If nil, it is moved to the current pane (this is like obvius-1.2). Default value is nil. Users might prefer either mode, depending on whether they like to set up panes with particular pictures.... Documented this. Thu Aug 20 11:14:41 1992 Eduardo-Jose Chichilnisky (ej at blue) * Added error-checking to (paste arr1 arr2) and (paste vec arr). Removed some unnecessary matrix-transposes from svd. Changed square-p, orthogonal-p, and diagonal-matrix to be more efficient. Took malloc out of chartohex.c, added the necessary allocation to write-postscript-data, and added a new argument to the ffi wrapper for internal-chartohex in lucid-ffi. Put back in the line (proclaim '(optimize (compilation-speed 0) (speed 3) (safety 0))) into lucid-ffi since this fixed the lucid-setf-ptr-% error. Tue Aug 18 14:25:47 1992 Eero Simoncelli (eero at ickenham) * Commented out all exports in contour-plot.lisp, except for the symbol 'contour-plot. * Changed back-compatibility macros in synth to be functions. * Nasty bug in flipbooks: subpics were not refreshed, but title bar said they were! Mods to flipbook.lisp marked with 8/18/92. Modified update-subpic-dialog on flipbook to use eq and put into flipbook,lisp. Moved update-subpic-dialog on overlay into overlay.lisp. * Changed *x-bltable-overhang* to 2.4 to make dragging behavior better. * fixed (setf iref) to return val * Put in ignore declarations to get rid of all compiler warnings (found a few bugs in the process!). * Changed *obvius-system-files* so that user-macros is loaded just after generic-fns. It defines macros that are used in synth. Mon Aug 17 18:52:09 1992 Eero Simoncelli (eero at ickenham) * Copied all exports from optional modules into generic-fns.lisp, so that you don't get import errors when you load them. * removed "x-dialogs" from the :x-control-panel module: they are needed with the :x-windows module, since meta-middle brings up a parameter dialog! Tested to see that picture dialogs work if control panel code is NOT loaded. * Modified drag-picture for gray/bitmap. Only clears exposed rectangles (old code cleared whole pane) and so avoids flickering. Old methods are still in the file (commented out). Only losing thing now is that it hesitates every time it has to recompute the X-image (i.e. after you drag 40% of the pane). This would improve if we could destructively modify the X-image data! * Added dimensions methods for gray/bitmap that return the zoomed size of the picture (old code returned dimensions of frob, which has changed -- see next change). Mon Aug 17 12:17:17 1992 Ciamac Moallemi (ciamac at ickenham) * Added smart zooming code to x-blt.lisp so that when 8-bit images are zoomed, only the part that is to be displayed is calculated (previous code zoomed the whole image). This speeds zooming operations up and eliminates a lot of consing. Sun Aug 16 13:39:02 1992 Eero Simoncelli (eero at picadilly) * Scary bug: Calling malloc from C code may cause a GC in lisp, thereby moving all dynamic data objects. Documented this in hacking.tex. * Modified code in patches.lisp to compile into the bin directory. Sat Aug 15 18:18:42 1992 Eero Simoncelli (eero at oxfordcircus) * New arglists: (crop im :offset :dimensions :x :y :x-dim :y-dim :->) (paste im base :offset :x :y :->) (cirular-shift im :offset :x :y :->) I kept around the old keywords (:x-size for crop, :x-offset for paste, :x-shift for circular-shift) for back-compatibility. Documented these. * Fixed nasty bug in viewable-insertion into function dialogs, where user lost left-mouse clicks in panes. Code no longer relies on mouse interests, and is therefore much more robust. * Inserted simple mechanism to only allow one function dialog to be on screen at once (avoid proliferation of these things, which ends up confusing the user because left-mouse clicks no longer go to *lisp* buffer). * Fixed make-global-parameter-dialog/make-slot-value-dialog/ make-slot-default-dialog: if a dialog already exists for the paremters/object/class, its values are reverted, and it is exposed. These are all kept in hash tables. * Added with-status-message macro. Put it into relavent files. * Aded position args to make-control-panel (:left :right :top :bottom). Added destroy-control-panel function (documented). When control-panel is destroyed, re-direct status msgs to Emacs minibuffer. * Added new menu items: round. truncate. floor. rotate resample. * Wrote find-all-subclasses (iterative depth-first search) and used it in class-based menus to get proper ordering. * Modified all function and class-defaults menus to be computed at click-time. Now modules can add items to these menus (eg, color-images will show up on viewable defaults menu). Also, user can add items by simply adding to the global variable lists. * Added Modules submenu to Misc menu: contains optional modules that have not yet been loaded. * Make-obvius modified to compile module source files (thus preventing problems when users try to load them). * Added obv-compile definition in lucid-defsys. Split compile-load into two functions: wrote compile-if-necessary and obv-compile. Fri Aug 14 23:07:11 1992 Eero Simoncelli (eero at oxfordcircus) * Fixed defaults dialogs so that colors are displayed as keywords or number-lists, instead of "(lv:find-color ....)". * CLeanup of abstraction barrier: tried to get rid of LispView references in gray.lisp, small mods to x-blt.lisp. BUt had to leave them in the defclass of bitmap, so that color spec errors are flagged in dialogs... Gross. * If bin directories (eg sun4-bin) don't exist, load-obvius now creates them. * Getting a nasty "lucid:set-%ptr-float-ref not defined" error whenever foreign code is called. It seems to happen when I compile-load lucid-ffi, but not if I just load the source. For now, took lucid-ffi out of *obvius-system-files* list, and loaded source from load-obvius. Fri Aug 14 17:59:22 1992 David Heeger (heeger at blue) * Fixed polar-plots to use their own polar-plot-frob. Previous code used vf-frob. Thu Aug 13 11:23:25 1992 Eduardo-Jose Chichilnisky (ej at blue) * Mods to SVD: allocate temporary space in Lisp and pass it in, since losing LUcid often calls GC when C mallocs! * Moved overlay code into hardcopy (ps stuff) x-bltable (x bitmap stuff) and x-mouse (mouse-specific stuff). Made overlay part of normal distribution (not a module). Wed Aug 12 17:51:53 1992 David Heeger (heeger at blue) * Rewrote overlay (again). * Minor changes to flipbooks related to picture slot dialog. Cleaned it up so that sub-pic slots are handled differently for flipbooks and overlays. Tue Aug 11 12:07:29 1992 David Heeger (heeger at blue) * Fixed hardcopy. Eero had left a huge bug that broke everything. The postscript-pane can not be used for the system-dependent-frob slot. Destroying a picture involves destroying its frob slot. If the frob slot is a pane, then destroy on a picture will attempt to destroy the pane (that wouldn't be good). * Fixed contour-plot reset-picture-defaults. If skip is supplied, then use it. Otherwise choose skip based on density (which is always supplied via default initarg). Sun Aug 2 17:26:29 1992 Eero Simoncelli (eero at ecru) * Massive speedup of flipbook code: added fast-display-seq method dispatching on sub-frob type. Wrote a generic one (works for all types of frob), and a fast one for 'x-bltables. Thus, flipbooks of gray pictures are now much more efficient. * Created a Makefile in the doc directory. * Added doc for filter display. * Added doc for fft and power-spectrum. Thu Jul 30 10:08:20 1992 Eero Simoncelli (eero at oxfordcircus) * Added make-full-tarfile for tar'ing entire source tree (for transfer between MIT to Stanford). Additional files include the DONE file, The site-specific site-paths.lisp files, and the old directory. * lucid-ffi: Put compiler optimizations at top of file. There were serious bugs calling foreign functions (I think because of in-line compilations). Confusion: it seems to work with safety-0 in the file.... * Added (:array :unsigned-8bit) declarations. * Added doc index entries for each subsection heading. Got rid of losing caps and plurals in index entries! (e.g. \lsym{Grays}) * Documented display, warp, rotate and resample. * Added rotate and resample to imops. * Warp no longer an optional module (it is very small so we should just include it). Wed Jul 29 16:20:22 1992 Eero Simoncelli (eero at oxfordcircus) * Speedup of display-seq (could still use more, but it's a start) * fixed use of density parameter in vector-field, contour-plot. * Pane manipulation functions provided (useful from within programs, or if mouse dies): exported pop-picture, cycle-pane, get-viewable. Wrote next-pane. Got rid of destroy-top-picture (same as pop-picture), and destroy-pane (destroy *current-pane*). Got rid of destroy-top-viewable: provided current-viewable instead, which returns viewable on top of current pane. Documented all of these. * Modified functions in synth to pass :binsize to (periodic)-point-operation calls. * Added point-operation method for periodic-discrete-functions. * changed names of synthetic noise generators (make-gaussian-noise, make-uniform-noise, make-random-dots). Left macros for backward compatibility. Documented these. Tue Jul 28 17:34:29 1992 Eero Simoncelli (eero at oxfordcircus) * Smaller floats in dialog boxes! * Fixed default blur kernel not to change mean value of im. * Small modification to with-result: handles 'apply 'fn in hist-list. * sequence.lisp -> viewable-sequence.lisp to avoid confusion with CL. Mon Jul 13 11:43:19 1992 Eero Simoncelli (MIT) * load-image on image-sequence now checks for a "class" key! * Modified fft to take dimensions argument. * Fixed rounding bug in warper.c. Sun Jul 12 09:50:08 1992 Eero Simoncelli (MIT) * Modified dialogs to come up below menu bar. Picture dialogs come up near the corresponding pane (depends on where the pane is and how big the dialog is - yucho!). * Added display stuff for filters (gray or bar-graphs, depending on rank). * Fixed ugly clipping-region bug for bar-graphs (wasn't drawing last spike) * Fixed array-from-list to coerce args to element-type if it is passed. Now, can pass integers: (make-filter '((1 2 3) (4 5 6))). * Fixed setf-iref on bit-image * Point-operation now has default binsize of nil => call the function directly (rather than using a discretized lookup-table). Slower, but no surprises! Documented. * Fixed paste on sequences to pass correct keyword defaults. * Added :center :post-center and :pre-center keys to power-spectrum and fft functions. These allow user to do circular-shifting automatically. Fri Jul 3 11:42:07 1992 Eduardo-Jose Chichilnisky (ej at green) * Replaced functions make-image, make-discrete-function, and make-log-discrete-function with methods. They can be used as before, but they now can also accept arrays as their first argument, in which case they act as the ***-from-array functions used to work. * Made new world. Removed patches. Wed Jul 1 23:19:26 1992 Eero Simoncelli (eero at oxfordcircus) * Fixed copy-object method so that initargs override slot values. * Took out exported globals from contour-plot. * Lucid-defsys.lisp: Got rid of global compilation safety proclamation: put it in as a declaration in obv-compile-load. Added (lcl::compile-all-dispatch-code) and (lcl::precompile-generic-functions) to load-obvius. This makes the methods much faster! Added optional filename to make-obvius. * Incorporated new surface-plot code. * Many fixes to hardcopy, although there are still problems. Works for surface-plots. Uses generic line-drawing frobs. Copied existing picture slots correctly. Works for retain-bitmaps t or nil. Default zoom parameter is :auto (fills the page). Postscript-pane dimensions are now '(660 500) (size of 8.5x11 paper in default postscript units). * Added point-operations round. truncate. and floor. to the source code. These are similar to the common lisp functions. Documented these. * Destroy mouse binding now removes pic from pane immediately. * Default args of crop modified. * Zoom is now a required arg to render. * Fixed zero! on sequences, pyramid, matrices to return vbl. Sat Jun 27 13:59:08 1992 David Heeger & Eero Simoncelli (heeger at blue) * Fixed Purge! function: it now takes keywords :suppress-warnings and :preserved-viewables. * Added set-not-current method on graphs to recompute y-range slot when refreshing. * Fixed setf iref. * control-panel icon. * Fixed overlays. Had weird problems with destroy, etc. Added name keyword to display-overlay. Added warning to get people to stop using make-overlay. Display-overlay returns t, instead of returning picture of viewable. * Fixed flipbook single-step to clear pane. NOTE: now this is busted for gray/bitmap flipbooks. We need to specialize on the sub-picture type. * Fixed display. If there is ANY picture of a vbl on any pane, auto-display does not make a new one! Also, auto-display does not move picture to another pane, since some users like to keep panes organized and don't want pictures randomly jumping around! * Fixed destroy, if name is :destroyed, don't try to destroy it again. * Fixed dot-product on viewable-matrix. Added zero! Fri Jun 19 09:29:57 1992 David Heeger (heeger at blue) * Fixed minor bug in free-array. It used to crap out if you passed it a non-static array, and no heap had yet been created. * bug fix in reset-picture-defaults ((pic flipbook) (seq viewable-sequence) Used to have (remf subl key) so it skipped every other keyword. * Added reset-compound-picture-defaults ((sub-pic graph) (sub-vbl viewable) Not quite correct, but it's better than it was. * Fixed array-fft to always divide by (sqrt (total-size arr)), both for foward and inverse. * Added endpoint slot to discrete-functions. Default value is t, so behavior is the same as it used to be. If endpoint is nil, then the discrete function starts sampling at min and stops just below max. Changed def-simple-class, settable-parameters, make-discrete-function, fill-discrete-function, set-result, domain. * Changed fft on discrete-function to do the right thing (I think) with :increment (/ 1 (increment df) padded-size). * Added periodic-discrete-functions. * Added log-discrete-functions. * Added circular-shift and mean-square-error on viewable-matrix. Tue Jun 9 14:40:52 1992 Eduardo-Jose Chichilnisky (ej at green) * Changed *starting-patch-file* to 1 from 5. Don't know why it was 5. * Added row-space, row-null-space, col-space, col-null-space to svd.lisp, removed orthogonal-complement (which is replaced by row-null-space). Fri May 29 17:39:39 1992 Eero Simoncelli (eero at oxfordcircus) * WRONG: I fixed x-mouse.lisp so that it doesn't initialze the X display. It is now back in the *obvius-x-files* list where it belongs. * Modiified Purge! function to take preserved-viewables args. * Added sym-or-vbl function. * Added new (slightly faster) convolve.c code. * Dialogs are now lv::popup-windows instead of lv::base-windows. * Moved old code into old/ directory. Fri May 29 10:53:34 1992 David Heeger (heeger at blue) * X-mouse can not be loaded into the world. It initializes the X display which breaks when the world is loaded. So, x-mouse.lisp is not included in site-init.lisp. Rather, it gets loaded at run time in obvius-window-init.lisp. Wed May 27 19:11:02 1992 Eduardo-Jose Chichilnisky (ej at green) * svd.lisp: Took out symmetric-decomposition, non-singular-p. Tue May 26 10:08:13 1992 David Heeger (heeger at blue) * Added multivariate gaussian-noise method (in svd.lisp because it depends on svd and other matrix utilities). * Added "old" directory in obvius for out-of-date code that we don't want to loose (e.g., old svd code written in lisp). Policy on files in "old" is there should be a comment near the top justifying why they shouldn't be deleted. If that reasoning is no longer valid, then nuke 'em. * svd.lisp: new version of principal-components. Added orthogonal-complement. * New file: row-ops.lisp (part of matrix module) - New versions of row,rows,col,cols,displaced-row,displaced-rows. - Lots of other new row operations, some of them pretty weird. * New file: gaussian-noise.lisp: - Changed gaussian-noise to be a method (yuch) that takes mean and variance as arguments. It's a method so we can use for multivariate gaussian noise also (given vector and covariance matrix). - Eliminated normal-random function. - Added normal-noise function that calls gaussian-noise with 0 1. - Had to make small change to simplex (which calls gaussian-noise). - Didn't change make-gaussian-noise-image. It does its own iterative thing. - Eliminated make-normal-random-image. * Changed how/when control panel gets made. x-control-panel is obv-required in site-init.lisp. Loading X-control-panel does not make a control panel. You must call (make-control-panel) in your obvius-init.lisp file. This is done in the default obvius-init.lisp. (make-control-panel) is now exported. Sun May 24 15:10:50 1992 David Heeger (heeger at blue) * Changed default for independent-parameters (used to be t, now it is nil) in flipbooks and pasteups. * Wrote gamma-correct method on arrays (in array-ops.lisp) and on viewables (in generic-ops.lisp). * Eliminated gamma from all gray pictures. Gamma-correction is done by setting gray-gamma in the screen. Eventually, screens will inherit from devices and the gamma slot will be either a number of a table (to linear the screen more precisely). * Finished rehacking overlays. There are some kludges, but it is good enough for now. Two main limitations: (1) Discrete-functions must have the same origin, increment, and size to be overlayed. (2) Overlaying bit-image on image is slower than it should be. Best way to do it would be to use :operation keyword in copy area, but I could not get that to work. Sat May 23 10:12:12 1992 Eduardo-Jose Chichilnisky (ej at green) * Made changes/additions to matrix.lisp. Functions affected: matrix-transpose,matrix. * Added statistics module. This consists of numerical-recipes.lisp and statistics.lisp. The user must set a path in the site-paths.lisp file which tells where to find the numerical-recipes object modules. Without them this stuff does not work. Fri May 22 16:24:18 1992 Eduardo-Jose Chichilnisky (ej at green) * Replaced regress.lisp and stepit.lisp files with newer versions. Added corresponding C code in stepit.c, and C code wrapper in lucid-ffi.lisp. Fri May 22 09:56:39 1992 David Heeger (heeger at blue) * Added :around method for single-step (in x-control-panel). If there is a picture parameters dialog, it updates the dlg so widgets point at the new sub-picture. Thu May 21 10:20:31 1992 David Heeger (heeger at blue) * Generic-ops.lisp created. Defines lots of methods on viewables to just operate on the data slot. Did NOT delete old method definitions (e.g., imops.lisp was unchanged). * defined range, similar, and copy on (thing t). removed range on image and viewable-matrix (to use the generic version). * destroy-viewable: always suppress-warnings if array is not allocated from static-heap. Used to warn every time (as debugging aid). * Changed definition of x-pane so that they can be destroyed with the mouse in the usual openwindows way. Added small change to draw-pane method on x-pane to make sure it doesn't try to redraw pane while it, and its pictures, are being destroyed. * Set parameters dialog on flipbooks and overlays now lets you set parameters of the subpictures as well: - Added set-subpic-parameter-interest class and receive event. - make-slot-value-widget now a method. It must be slightly different for flipbooks and overlays. Tue May 19 10:43:31 1992 David Heeger (heeger at blue) * Added plot symbols to all graphs. This involved touching a lot of code in drawing.lisp and graph.lisp, and touching some code in x-draw.lisp, x-window.lisp, and hardcopy.lisp. The previous versions of some of these files were saved as whatever.lisp.5-19-92. * Added axes (but no axis labels) to polar plots. * Added scatter plots. (display image-pair 'graph) no longer works. Use (display image-pair 'scatter-plot) or use the new scatter-plot method. * Started rewriting overlays. First step was to remove all references to overlay in color-picture, drawing, gray, memory, and picture.lisp. Tue May 12 18:29:06 1992 Eero Simoncelli (eero at oxfordcircus) * Added patches accumulated from October 1991 to present: - Patch repl to avoid setting * when no values returned - Added make-disc function with soft threshold - New: make-soft-threshold-df - Purge! function to reclaim all memory (destroying all viewables). * Fixed all of the make- functions. Put the :-> arg back since it was driving us all crazy. Also, each of these functions now should have a full (explicit) keyword arglist. This is so users can find outline-mode what the parameters are! Thu Apr 23 16:41:43 1992 Eero Simoncelli (eero at picadilly) * Modified compile-load (sorry, guys) to have :output-file keyword, which matches the Common Lisp compile-file command. * Modified obv-compile-load to locally bind compiler options, and got rid of global proclaim in lucid-defsys.lisp * Put initialization line in x-control-panel.lisp (make-control-panel) * Set up new version number (2.2)