Guile-SDL NEWS

Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Thien-Thi Nguyen
See the end for copying conditions.

Please send Guile-SDL bug reports to <ttn@gnuvola.org>.


- 0.3.10 | 2009-04-24

  - bugfix: set-position now usable

	This (sdl mixer) proc, introduced in Guile-SDL 0.3.9, now
	correctly accepts three args, as documented.

  - MMX detection

	The configure script now detects whether or not the CPU supports
	MMX instructions and automatically builds with USE_MMX=1 if so.

  - (sdl sdl) procs implemented: set-event-filter, get-event-filter

	Previously, these would throw an error saying "not yet
	implemented (sorry)".  Note that the interface for
	`set-event-filter' is different from before.  This is not a
	problem since the proc was not useful before, anyway.

  - new (sdl gfx) proc: draw-arc

	This is because the embedded libSDL_gfx is now at version 2.0.18.

  - maintenance uses autoconf 2.63 and libtool 2.2.6


- 0.3.9 | 2008-04-02

  - bugfix for "make uninstall"

	Previously, this left some files in $(GUILE_LIBSITE)/sdl.
	Now, those files (and that directory) are properly deleted.

  - new (sdl gfx) procs

	These 26 are the image-filter functions that have a C
	implementation: imfi-mmx?, imfi-add, imfi-mean, imfi-sub,
	imfi-abs-diff, imfi-mult, imfi-mulnor, imfi-muldiv2,
	imfi-muldiv4, imfi-logand, imfi-logior, imfi-div, imfi-not,
	imfi-add-c, imfi-add-c-to-half, imfi-sub-c, imfi-ashr,
	imfi-lshr, imfi-mul-c, imfi-ashr-mul-c, imfi-bshl, imfi-lshl,
	imfi-ashl, imfi-binarize, imfi-clip, imfi-normalize-linear.

	On ttn's computer, (imfi-mmx?) => #f, so the MMX side of things
	has not been tested.

  - new (sdl mixer) procs: set-panning, set-distance, set-position

	Move the sound 'round and 'round;
	all that's missing is up and down.

  - public repo: http://www.gnuvola.org/wip/  (guile-sdl)

  - maintenance now uses libtool 1.5.24 and automake 1.10.1


- 0.3.8 | 2007-10-11

  - new (sdl misc-utils) proc: fader/3p
  - new (sdl misc-utils) proc: toroidal-panner/3p

	These are three-phase exposing variants of `fade-loop!' and
	`toroidal-panner', respectively.  (In fact, the old procs have
	been rewritten to use the new.)  Three-phase procs return three
	values, one for each phase of "init", "next" and "done".  This
	lets caller maintain control for fine(r)-grained scheduling.
	See manual for an example of the stylized call sequence.

	NOTE: Both `fade-loop!' and `toroidal-panner' are scheduled for
	removal by 2008-01-01.  DO NOT RELY ON THEM.

  - new (sdl gfx) proc: blit-rgba
  - new (sdl gfx) proc: set-pixel-alpha!

	The latter wraps `SDL_gfxSetAlpha' in the underlying (SDL_gfx)
	library, but the natural schemified name would clash w/ SDL's,
	so this was chosen for uniqueness as well as to emphasize its
	per-pixel nature.

  - docs have more info

	The manual now lists valid values for flagstash:* and *-enums,
	mined using `flagstash-flags' and `enumstash-enums', respectively.


- 0.3.7 | 2007-09-16

  - license now GPLv3+ (see COPYING)

  - installation changes
    - no longer created: libFOO.so symlink to FOO.so
    - deleted: .la file, libFOO.so and other symlinks

  - embedded library upgraded: libSDL_gfx 2.0.16
    - new proc: draw-textured-polygon
    - new proc: roto-zoom-surface-xy
    - new proc: shrink-surface

  - changes to (sdl simple) procs
    - new simple-canvas command: #:resize! NEW-WIDTH NEW-HEIGHT
    - simple-stylus #:render can take optional args: COLOR, BG
    - simple-stylus #:write! has new INCOMPATIBLE interface; see manual

  - maintenance now uses libtool 1.5.24 and autoconf 2.61


- 0.3.6 | 2007-02-06

  - bugfixes
    - load-image now returns #f (instead of crashing) if there are problems
    - get-video-info rv now has "wm-available" and bool "blit-fill"
    - map-rgb and map-rgba now return unsigned integer
    - make-surface now
      - uses pixel format from current video surface, if available
      - handles case: no current video surface and no flags specified

  - return value specified: both quit and quit-subsystem now return #t
  - more slackful: update-rects now accepts an empty list for second arg
  - more slackful: set-clip-rect! now accepts #f for second arg
  - more slackful: cd-get-{num-tracks,cur-track,cur-frame} call cd-status

  - changes with compatability note (see each proc's documentation)
    - grab-input now takes and returns symbols, one of: query, off, on

  - new (sdl sdl) proc: rect?
  - new (sdl sdl) proc: color?
  - new (sdl misc-utils) proc: rectangle-closure
  - new (sdl misc-utils) proc: rectangle<-geometry-string
  - new (sdl misc-utils) proc: rect<-surface
  - new (sdl misc-utils) proc: copy-rectangle
  - new (sdl misc-utils) proc: toroidal-panner


- 0.3.5 | 2006-01-29

  - change to (sdl misc-utils) proc: copy-surface

	This now takes an optional second arg CLIP, a rectangle which
	specifies the portion of the surface to copy.  By default (if
	unspecified or #f), the entire surface is copied.

  - implementation for (sdl sdl) proc: get-key-state

  - new (sdl misc-utils) proc: fade-loop!

  - maintenance uses GNU Automake 1.9.6


- 0.3.4 | 2005-05-17

  - bugfix: smob memory accounting

	The rectangle, event, color, and cursor smobs used to either
	fail to free their internal resources, or report an incorrect
	number as the return value of their "free" function.  This would
	cause Guile to become confused and, in the worst case, also leak
	memory (and eventually segfault).

	These errors have now been fixed.  The test for them is in file
	test/leak.scm, which enabled only for "make check DEBUG=1".

  - new (sdl sdl) proc: get-wm-info

  - FSF street address updated in copyright notices


- 0.3.3 | 2005-04-03

  - bugfix: get-clip-rect no longer causes error

	The implementation no longer tries arrange for SDL to write
	through a NULL pointer; this used to result in the SDL parachute
	being deployed if present, or a segfault otherwise.

  - bug exposure change: procs more strict on unsigned types

	The following procs now take care to do unsigned integer
	conversion directly, instead of signed conversion followed by
	cast to unsigned.

	create-rgb-surface
	map-rgba
	map-rgb
	get-rgb
	warp-mouse

	This is part of an ongoing effort to remove/reduce "manual"
	casting (which may mask bugs) in the codebase.

  - new (sdl sdl) proc: get-app-state

  - change to (sdl misc-utils) proc: copy-surface

	This now uses `convert-surface' to do one-step copy/conversion,
	instead of the two-step process used previously.  The SRCALPHA
	(per-surface flag) handling added in Guile-SDL 0.3.2 has been
	removed.

  - procs which take lists of symbols now handle #f and empty list

	Using these args is now equivalent to specifying 0 (zero) to the
	underlying SDL function.

  - `set-alpha!' third arg now optional

	If omitted it is taken as #f.

  - new chapter in manual: "Excuses (Undone Wrapping)"


- 0.3.2 | 2005-01-23

  - bugfix: (sdl sdl) proc `fill-rect' handles alpha/red values > 127

	The color used to be extracted as signed instead of unsigned.
	This caused incorrect out-of-range errors for color values whose
	high bit (alpha for ABGR, red for RGBA) was set.

  - bugfix: (sdl misc-utils) proc `copy-surface' handles SDL_SRCALPHA

	The proc now takes care to clear this flag (and restore it
	afterwards) in the source surface around the blit, so that RGB
	values are copied correctly.  Unfortunately, the actual alpha
	value is lost due to being unconditionally restored as 255.

  - procs moved to (sdl gfx): zoom-surface and roto-zoom-surface

	Side effect of the upgrade described in the next entry.

  - embedded library upgraded: libSDL_gfx 2.0.13

	This library (by Andreas Schiffler) is the successor to
	libSDL_gfxPrimitives and libSDL_rotozoom, incorporating their
	functionality and interfaces, and providing other goodies as
	well.  The result for Guile-SDL users is that module (sdl gfx)
	has been augmented w/ the following new procs:

	zoom-surface		;; moved from (sdl sdl)
	roto-zoom-surface	;; likewise
	draw-hline		;; rest are completely new
	draw-vline
	draw-aa-circle
	draw-aa-ellipse
	draw-pie-slice
	draw-trigon
	draw-aa-trigon
	draw-aa-polygon
	draw-bezier
	make-fps-manager
	fps-manager-set!
	fps-manager-get
	fps-manager-delay!

	For more info, see new chapter "libSDL_gfx" sections: Graphics
	Primitives, Rotation / Zooming, and Managing Frame Rate.


- 0.3.1 | 2005-01-08

  - bugfix: `make-surface' and `create-rgb-surface' no longer ignore `flags'

	These procs used to internally hardcode SDL_HWSURFACE instead of
	using the `flags' argument.

  - dropped (sdl sdl) proc: scale-surface

	This was never implemented.  Its advertized functionality was
	also redundant w/ `zoom-surface', which furthermore has the
	benefit of a more flexible interface.

  - print representation for flagstash objects now begins with "#"

	This is to follow the Scheme convention for printing objects
	that cannot be `read' back in.

  - implementation for (sdl sdl) proc: event-state
  - implementation for (sdl sdl) proc: peep-events

	Previously the interface was available but calling these procs
	resulted in a "not yet implemented" error.

  - new (sdl misc-utils) proc: copy-surface
  - new (sdl misc-utils) proc: ignore-all-event-types-except

  - new module: (sdl simple)


- 0.3.0 | 2004-11-25

  - "guile-tools make-module-catalog" no longer invoked unconditionally

	If your Guile installation does not provide this program, that's
	ok; Guile-SDL will still build.  However, in that case the
	wrapper script `wily-guile' may have difficulty finding the
	pre-installed compiled modules, which will affect "make check",
	primarily.

	For more info, see file GUILE-FIXES in the distribution directory.

  - "make install" more graceful for !HAVE_MIXER and !HAVE_TTF

	The "make install" for these subsystems, when disabled (either
	due to lack of underyling support, or through command-line
	options to ./configure), used to try to symlink files that were
	not present (see NEWS for Guile-SDL 0.2.5).


- 0.2.6 | 2004-09-01

  - docs cleanup

	The documentation methodology extracts signatures from functions
	in C source code and thus the variable name of the arguments are
	the ones displayed (unless overridden).  Previously, the vars
	were named w/ an "s_" prefix to indicate "scheme value", a mild
	form of Hungarian notation.  A particularly striking example:

	 - Scheme Procedure: create-rgb-surface s_flags s_width s_height
		s_depth s_rmask s_gmask s_bmask s_amask

	This has now been changed to read:

	 - Scheme Procedure: create-rgb-surface flags width height depth
		rmask gmask bmask amask

	The signature still occupies two lines -- unavoidable w/ so many
	arguments -- but the whole is less jarring to read (we hope).

  - info entry now under category "Guile modules"

	It used to be under "Guile".

  - "basics" series finished

	This release concludes the "basics" series which prioritized
	general methodology refinement over features.  Next series, to
	be numbered 0.3.x, is for "coverage" (see TODO).


- 0.2.5 | 2004-07-23

  - backward-compatability installation bugfix: libFOO.la symlinks

	To support the venerable "scm_init_FOO_BAR_module" method for
	loading binary modules in versions of Guile that look for a
	FOO/libBAR.la, and not simply FOO/BAR.la, appropriately named
	symlinks are now created for each installed .la file.

  - bugfix: symbolic return value for `fading-music' and `fading-channel'

	These procs used to return an integer.  Now they return a
	symbol, one of: MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN.

  - new (sdl misc-utils) proc: poll-with-push-on-timeout-proc

  - new (sdl sdl) proc: enumstash-enums


- 0.2.4 | 2004-06-28

  - installation change: scheme wrappers eliminated

	The module (sdl sdl) used to be a scheme wrapper for binary
	module (sdl sdl-sup).  Now it is the binary module itself.
	See README.  Also, (sdl sdl) no longer provides the procs
	`call-with-clip-rect' and `rotate-square'.

	On "make install" if file $(GUILE_SITE)/sdl/sdl.scm exists,
	it is deleted.  If the dir $(GUILE_SITE)/sdl is empty as a
	result, it is also deleted.

  - new module: (sdl misc-utils)

	Currently this contains the procs `call-with-clip-rect' and
	`rotate-square', both of which used to be available in module
	(sdl sdl).  The procs are documented in the info pages in a new
	chapter: "Miscellaneous Utilities".



- 0.2.3 | 2004-03-06

  - return value changes
    - cd-status: symbolic (was integer)
    - cd-get-nth-track: #f on error (was empty list)
    - joystick-get-ball: #f on error (was empty list)

  - new (sdl sdl) proc: string->image


- 0.2.2 | 2004-02-08

  - bug fix: module (sdl sdl) no longer loads (ice-9 syncase)

  - bug fix: roto-zoom-surface arg zoom no longer ignored

  - bug fix: all-but-last optional args now handle #f as "unspecified"

	If a procedure takes optional only one optional arg, that
	procedure has not changed.

	If a procedure takes more than one optional arg, all but the
	last of such args now handle #f the same as being "unspecified".
	To have the last optional arg be interpreted as "unspecified",
	simply omit it!

	This change was motivated to allow specification of the last
	optional arg while "not really specifying" the others.  Here is
	a list of procedures (and the optional args involved) that were
	changed, grouped by module:

    - (sdl mixer)

	open-audio -- freq format chunksize
	play-channel -- channel loops ticks
	play-music -- loops
	volume -- volume
	expire-channel -- channel
	fade-out-channel -- which
	fade-out-group -- tag

    - (sdl sdl)

	cd-play-tracks -- start-track start-frame n-tracks n-frames
	cd-msf->frames -- s f
	make-keysym -- sym
	roto-zoom-surface -- zoom
	zoom-surface -- zoomy
	blit-surface -- srcrect dst dstrect
	list-modes -- pixel-format flags

  - arity relaxation

	The last arg for some procedures has been made optional.  Code
	specifying these args still works (backwards-compatible change).
	Here is a list of procs -- all in module (sdl sdl) -- and their
	affected args:

	set-clip-rect -- rect
	set-caption -- icon
	video-mode-ok -- flags


- 0.2.1 | 2004-01-19

	This is a maintenance release (no user-visible changes).
	Basically, some sub-optimal C macrology was reworked.


- 0.2.0 | 2003-11-21

  - installation change: scheme wrappers for most modules eliminated

	Previously, the modules (sdl mixer), (sdl ttf) and (sdl gfx)
	were implemented as a combination of a small piece of Scheme
	code that dlopened a libtool-created shared object library in
	${libdir}.  Since Guile can recognize certain shared object
	libraries as modules and load them directly, these Scheme code
	wrappers are not required and thus are now no longer distributed.
	Instead, "make install" places the shared object libraries for
	these modules and their support files in directory:

		${GUILE_LIBSITE}/sdl/

	The value of ${GUILE_LIBSITE} is determined by the `configure'
	script.  Also installed in this directory is the compiled module
	(sdl sdl-sup), an internal module used by all the user-facing
	modules.  Related to these changes, if the program "guile-tools
	make-module-catalog" is available, installation invokes it for
	the ${GUILE_LIBSITE} directory for the compiled modules, and
	${GUILE_SITE} for module (sdl sdl).  See README for more info.

  - upgrade facility: make {check,clean}-000-libdir

	See README section "Upgrading Tips" for info on how to handle
	old ${libdir}/libguileSDL* files (from Guile-SDL 0.1.x).

  - "sdl-" prefix dropped

	Procedure names no longer begin with "sdl-".  You can use the
	#:renamer clause (in `use-modules' and `define-module' forms)
	to add this back, or possibly choose another prefix.  In this
	distribution, the tests, examples and documentation use "SDL:".

  - "make check" now respects INTERACTIVE env var

	Normally "make check" skips tests that require human
	interaction.  You can do "make check INTERACTIVE=1" to
	enable running those tests as well.


- maintainership transfer: ttn

	A big thanks goes to Alex Shinn, Vikram Subramanian, and Joel
	Smith, the original authors of the disparate packages that all
	came together as Guile-SDL in mid-to-late 2001, for (1) writing
	the code; (2) pooling their efforts; and (3) passing it on.


- 0.1.7

	Most of the merge complete.  Looking to make some minor clean-up
	and bugfixes before a 0.2.0 release.


- 0.1.0

	This is the very first version of Guile-SDL.


Copyright information:

   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.

   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.

______________________________________________
	Local Variables:
	mode: outline
	outline-regexp: "\\([ ][ ]\\)*- "
	fill-column: 72
	fill-prefix: "\t"
	End:
