2004-03-16 Ron Steinke <rsteinke@w-link.net>
	* wftk/Makefile.am: Fixes so version.h and string_hash_map.h
	  aren't included in the tarball, since they're generated at
	  configure time.
	* Makefile.am: Fixed 'make demos' from root dir.
	* configure.ac: Bumped micro version.
	* 0.7.1 release!

2004-03-13 Ron Steinke <rsteinke@w-link.net>
	* configure.ac: Compile with -DNDEBUG if not a debug build.
	* version.h.in: Added a comment to remind me to remove the stupid,
	  unnecessary 'extern "C"' the next time we break binary compatibility.

2004-02-19 Ron Steinke <rsteinke@w-link.net>
	* rootwindow.*: Fix the soft mouse pointer drawing code so
	  ScreenSurface::update() includes the mouse draw region.
	  Combine duplicate code in the two versions of MouseBuffer::update()
	  by having one version call the other.

2004-02-18 Ron Steinke <rsteinke@w-link.net>
	* screensurface.cpp: Allocate the array of SDL_Rect for
	  SDL_UpdateRects() on the stack instead of with 'new'.

2004-02-17 Ron Steinke <rsteinke@w-link.net>
	* region.h, region-generic.cpp: Added getRect(), nRects()
	  as an alternative method of getting the rectangles in
	  Region without having to allocate memory.
	* surface.cpp, screensurface.cpp: Changed from using getRectangles()
	  to getRect(), nRects().
	* region.h, region-generic.cpp: Added Region::const_iterator,
	  an iterator over the points in a region. This will make adding
	  masking support to pixel-twiddling functions like Surface::gammaShift()
	  much easier.
	* region.h, point.h: Wrapped Region::getRectangles() and
	  Point's (empty) destructor with #ifndef WFTK_DISABLE_DEPRECATED.
	  They'll go the next time we make a binary-incompatible change.

2004-02-15 Al Riddoch <alriddoch@zepler.org>
	* Update and clean up rpm spec. Too late, sorry.

2004-02-14 Ron Steinke <rsteinke@w-link.net>
	* 0.7.0 release!

2004-02-14 Ron Steinke <rsteinke@w-link.net>
	* AUTHORS, README: Updated documentation.
	* Makefile.am, demos/Makefile.am, docs/Makefile.am:
	  Undid some of the Makefile changes so the 'distcheck'
	  target works properly.
	* configure.ac, wftk/Makefile.am, wftk-*.pc.in:
	  Bumped version number in preparation for release.

2004-02-10 Ron Steinke <rsteinke@w-link.net>
	* resources.h: Added size() and empty() functions to the
	  ResourceRegistry.

2004-02-09 Kai Blin <blin@gmx.net>
	* docs/Makefile.am, docs/Doxyfile.in: moved to docs, autogenerate some
	  info
	* Makefile.am: fixed generation of docs and demos a bit
	* demos/Makefile.am: cleaned up and fixed some variables issues
	* configure.ac: added a check for doxygen
	* bordereddialog.h: added some doxygen comments

2004-02-07 Ron Steinke <rsteinke@w-link.net>
	* debug_timer.h: Added a check() method, so people can write their
	  own more general versions of mark().

2004-02-04 Ron Steinke <rsteinke@w-link.net>
	* dialog.*: Added an optional 'modal' argument to exec(). This
	  argument controls whether the dialog in question controls all
	  input (as opposed to the old 'modal' argument in the constructor,
	  which caused exec() to block, whose role has been taken over
	  by the 'blocking' argument in exec()).

2004-01-21 Ron Steinke <rsteinke@w-link.net>
	* configure.ac: Changed freetype2 version check to only
	  disallow 2.1.5.

2004-01-18 Ron Steinke <rsteinke@w-link.net>
	* table.cpp: Have pack() fail nicely when someone tries to
	  add a widget that takes up zero rows or columns.

2004-01-18 Ron Steinke <rsteinke@w-link.net>
	* font.cpp: Have the font resource loader function catch
	  the BadFont exception that's thrown when a font fails
	  to load, and return the failure in a form the resource
	  registry understands.

2004-01-17 Ron Steinke <rsteinke@w-link.net>
	* configure.ac: Added a check to require freetype2 to be
	  at least version 2.1.6. Earlier versions have a bug,
	  and don't properly provide the kerning information we
	  rely on to draw our fonts.

2004-01-17 Ron Steinke <rsteinke@w-link.net>
	* region-generic.cpp: Tightened up Region::boundary() a bit.

2004-01-12 Ron Steinke <rsteinke@w-link.net>
	* demos/struct_size.cpp: Missed one.

2004-01-12 Ron Steinke <rsteinke@w-link.net>
	* messagebox.*: Changed MessageBox to MessageDialog to avoid
	  name conflicts under win32.

2004-01-11 Ron Steinke <rsteinke@w-link.net>
	* debug_timer.h, wftk/Makefile.am: Added a new DebugTimer
	  class, to provide information on how much time different
	  parts of the code take.
	* screenarea.cpp, debug.h, application.cpp: Added a new
	  DRAW_TIMING flag, which provides information about how
	  long widgets take in their draw() and drawAfter()
	  functions.

2004-01-11 Ron Steinke <rsteinke@w-link.net>
	* lineedit.cpp: Cast some enums to ints, to get rid of a win32
	  compile warning.

2004-01-10 Ron Steinke <rsteinke@w-link.net>
	* eventqueue.h, wftk/Makefile.am: Added EventQueue class.
	* pixelformat.cpp: Fixed possible race condition with
	  static pixelformat data initialization.

2004-01-04 James Turner <james@worldforge.org>
	* Fix text deletion in lineedit (and hence, multi-line edit) widgets :
	  detect backspaces via the SDL key syms, not the ASCII character code.
	* Fix an include of "version.h" to be <wftk/version.h>, as OS-X framework
	  packaging requires.

2004-01-03 Ron Steinke <rsteinke@w-link.net>
	* region-generic.cpp, region.h: Made Region::boundary() more efficient.

2004-01-03 Ron Steinke <rsteinke@w-link.net>
	* region-generic.cpp: Fixed the calculation of Region::boundary()
	  for the 'inside' case.

2003-12-22 Ron Steinke <rsteinke@w-link.net>
	* surface.h, painter.*: Moved getPixel() and setPixel() from
	  Painter to Surface. This will 1) alll getPixel() to be called
	  on const Surfaces, and 2) get rid of about 80% of the Painter
	  instances in current code, which are mostly just calling
	  getPixel().
	* application.cpp: Fixed a whitespace typo.

2003-12-21 Ron Steinke <rsteinke@w-link.net>
	* application.*, mapinit.h, wftk/Makefile.am: Expanded Application's
	  command line debug flag parsing abilities to allow other applications
	  to pass in their own command line debugging options.

2003-12-21 Ron Steinke <rsteinke@w-link.net>
	* mouse.cpp, multilineedit.cpp, slider.cpp: Changed buttonEvent()
	  and mouseEvent() to give coordinates relative to the widget,
	  instead of absolute window position.

2003-12-20 Ron Steinke <rsteinke@w-link.net>
	Demitar's win32 build fixes:
	* messagebox.h: #undef MessageBox if it's been #defined
	* poll.h: use winsock2.h, not winsock.h
	* surface.cpp: consistently use USE_SDL_OPENGL instead
	  of HAVE_LIBGL

2003-12-14 Ron Steinke <rsteinke@w-link.net>
	* painter.cpp: Moved the pixel address calculations outside
	  of the surface lock in setPixel() and getPixel().
	* surface.cpp: Fixed opaqueRegion() so it actually works now.

2003-12-10 Ron Steinke <rsteinke@w-link.net>
	* configure.ac: Fixed a problem with SDL_main in the
	  SDL_opengl.h compile test on win32.

2003-12-06 Ron Steinke <rsteinke@w-link.net>
	* configure.ac, surface.cpp, screensurface.cpp, rootwindow.cpp,
	  demos/glapp.cpp: Added an #undef to fix a compiler warning
	  under win32.

2003-12-06 Ron Steinke <rsteinke@w-link.net>
	* widget.h: Added the getResourceBackground() function from
	  RT #421, and a const char* version of setDisabledColor
	  to deal with compiler confusion about whether to chain
	  through std::string or Color.

2003-12-06 Ron Steinke <rsteinke@w-link.net>
	* configure.ac: Added an AC_TRY_COMPILE() for SDL_opengl.h,
	  since it appears to be having problems in the mingw32
	  test build. This should convert that build failure to
	  a configure warning, and proceed with the non-opengl
	  build.

2003-12-04 Ron Steinke <rsteinke@w-link.net>
	* surface.*: Added Surface::opaqueRegion().
        * region.h, region-generic.cpp: Added Region::boundary().

2003-11-23 Ron Steinke <rsteinke@w-link.net>
	* widgets.cpp: Draw the background color as well if the
	  background surface is partially transparent.

2003-11-23 Ron Steinke <rsteinke@w-link.net>
	* screenarea.cpp: Fixed a bug where widgets two or more
	  levels below the root window weren't getting invalidated
	  on expose.
	* debug.h: Added a removeChannel() function, parallel to
	  addChannel().

2003-11-22 Ron Steinke <rsteinke@w-link.net>
	* table.*: Added some accessors to make getting at table
	  elements easier.

2003-11-15 Ron Steinke <rsteinke@w-link.net>
	* surface.cpp: Wrapped drawGL() in #ifdef HAVE_LIBGL, wftk
	  now builds successfully with --disable-opengl.
	* configure.ac: Fixed some column alignment problems
	  with the output of configure --help.

2003-11-09 Ron Steinke <rsteinke@w-link.net>
	* listbox.cpp: Make ListBox display properly when it
	  doesn't contain any choices.

2003-11-09 Ron Steinke <rsteinke@w-link.net>
	* wftk.dox WFTK.pbproj/project.pbxproj demos/glapp.cpp
	  demos/lines.cpp demos/struct_size.cpp wftk/Makefile.am
	  bordereddialog.cpp button.* dialog.* lineedit.* mixer.cpp
	  wftk.h: Got rid of SoundMapper class, which was just a
	  wrapper for Mixer::playSample().
	* demos/alpha.cpp demos/ump3.cpp button.* listbox.*
	  pushbutton.* togglebutton.*: Button no longer inherits
	  from Label. Instead, it inherits from SingleContainer,
	  and has a constructor which takes a string, creates a label,
	  and inserts it in the container.
	* demos/quitcheck.h bordereddialog.* dialog.* fixeddialog.h
	  fullscreendialog.h messagebox.h progressdialog.cpp questionbox.h:
	  Dialog no longer has a 'modal' argument in its constructor,
	  instead Dialog::exec() takes a 'blocking' argument.
	* wftk/Makefile.am application.* mouse.* poll.* rootwindow.* timer.*:
	  wftk mainloop rework for better event atomicity and reentrancy
	* sdlhandler.* screensurface.cpp surface.cpp: separated SDL event
	  handling into a separate class as part of the mainloop cleanup
	* button.* togglebutton.*: Made Button data members private instead of
	  protected by moving the toggle() function from ToggleButton to
	  Button (Button/PushButton are still pressed/released on mouse
	  press/release, since the code that makes ToggleButton handle that
	  differently is in its event handler).
	* button.* timer.*: Got rid of duplicate signals (e.g. alarm and
	  alarm1 in Timer) by having a single signal class which inherits
	  from a SigC::Signal, but overloads the connect() function by using
	  sigc++ slot-munging functions.
	* pushbutton.*: Fixed problems with opacity check in pushbutton.
	* refobj.h screenarea.* poll.*: Created generic refcounting object,
	  instead of having the same code multiple times in different classes.
	* string_hash_map.h.in: Added docs

2003-10-25 Ron Steinke <rsteinke@w-link.net>
	* mixer.h music.h painter.h sample.h sound.h surface.h timer.h:
	  Yet more doc fixes

2003-10-25 Ron Steinke <rsteinke@w-link.net>
	* pointer.h pushbutton.h questionbox.h sound.h timer.h
	  version.h.in video.h videowidget.h: More doc fixes
	* surface.h: DirectSurface is no longer a friend, it
	  got removed from the lib a long time ago.

2003-10-25 Ron Steinke <rsteinke@w-link.net>
	* application.h, bofdereddialog.h, box.h, color.h, debug.h,
	  dialog.h, focus.h, font.h, joystick.h, marshal.h, messagebox.h,
	  mouse.h, movie.h, point.h, pointer.h, poll.h, progressdialog.h,
	  questionbox.h, region.h, resources.h, screenarea.h, screensurface.h:
	  Doc fixes

2003-10-20 James Turner <james@worldforge.org>

	* Add ProjectBuilder project (needs sigc++ framework). Currently a
	  work in progress, since I can't decide whether to use SDL as
	  a Fink package or a framework.
	* Fix a bunch of SDL includes that didn't begin with <SDL/ :
	  doing a framework build of SDL mandates this.

2003-10-19 Ron Steinke <rsteinke@w-link.net>
	* timer.cpp: Wasn't updating old_ticks in Time::now(), fixed.
	* poll.cpp: Prevent copy construction of PollData.

2003-09-29 Malcolm Walker <malcolm@worldforge.org>
	* deprecated.h: Removed file.  Goodbye, functions

2003-09-28 Ron Steinke <rsteinke@w-link.net>
	* screenarea.cpp: Fixed a sense-of-comparison bug
	  in setting the sizes of widgets in containers
	  which are smaller than their prefered size.
	* table.cpp: Commented out the rest of the broken
	  multi-row/column widget size calculation code.
	  At this point, we're relying on the widgets
	  which only occupy a single row or column to
	  calculate the prefered table size.
	* resources.h: Added ResourceRegistry::loadAnonymous().

2003-09-21 Ron Steinke <rsteinke@w-link.net>
	* application.*: Modified Application constructor
	  and destructor a bit so that SDL is guaranteed
	  to be initialized if Application::instance()
	  returns non-null. This was pretty much true
	  before, but the changes make it much less likely
	  that'll get broken by future modifications.

2003-09-20 Ron Steinke <rsteinke@w-link.net>
	* timer.cpp: Check that SDL has been initialized before
	  calling SDL_GetTicks() in Time::now().

2003-09-20 Ron Steinke <rsteinke@w-link.net>
	* messagebox.h: Added an optional 'modal' argument to the
	  constructor.
	* application.*: Added an optional wait_val argument to
	  the SigC::Slot version of Application::waitFor().

2003-09-20 Ron Steinke <rsteinke@w-link.net>
	* timer.cpp: Cleaned up Time::operator-() a bit.

2003-09-20 Ron Steinke <rsteinke@w-link.net>
	* demos/Makefile.am, demos/alpha.cpp, demos/glapp.cpp,
	  demos/plaympeg.cpp, demos/simple.cpp, demos/text.cpp,
	  demos/quitcheck.h: Move the common 'Really Quit?'
	  dialog code into a QuitCheckApp class derived
	  from wftk::Application.

2003-09-17 Ron Steinke <rsteinke@w-link.net>
	* dialog.cpp: Only bump the refcount for modal dialogs
	  in the constructor (as the docs say), not for all
	  dialogs (as we were doing). That way, nonmodal dialogs
	  are actually destroyed when we're done with them.
	* poll.cpp: Fixes so the virtual function Poll::socket()
	  actually functions as designed.

2003-09-11 Malcolm Walker <malcolm@worldforge.org>
	* surface.h: remove commented functions, flesh out
	  doxygen docs, whitespacing
	* demos/lines.cpp, demos/smoke.cpp: Substitute internal
	  logo media if external files not found

2003-09-08 Malcolm Walker <malcolm@worldforge.org>
	* Release version 0.6.0 of wftk.  Yay!
	* BUGS: Remove mouse-pointer bug, add OpenGL bug.
	
2003-09-01 Malcolm Walker <malcolm@worldforge.org>
	* lineedit.cpp: Fix bug in line edit that 
	  kept text input locked even after clearing.

2003-08-27 Malcolm Walker <malcolm@worldforge.org>
	* surface.cpp, screenarea.cpp, rootwindow.cpp:
	  More OpenGL madness.  Fix texture tranparency,
	  Change from GL_DECAL to GL_REPLACE mode (except
	  for blend()ed rectangles.  Still broken.

2003-08-26 Malcolm Walker <malcolm@worldforge.org>
	* Add debug channel for opengl (Debug::OPENGL)
	* Convert openGL screen-blitting code to convert to
	  textures after one draw using glDrawPixels.
	* surface.cpp: Add private method to Surface class
	  for drawing of GL pixels.
	  
2003-08-25 Al Riddoch <alriddoch@zepler.org>
	* Makefile.am: Remove stray -.

2003-08-25 Malcolm Walker <malcolm@worldforge.org>
	* Remove all traces of wftk-config- using pkg-config now

2003-08-24 Al Riddoch <alriddoch@zepler.org>

	* configure.ac: Get rid of Mike Days language checks as they
	  are getting out of date.

	* acinclude.m4: Remove obsolete sigc++ macro.

2003-08-24 Malcolm Walker <malcolm@worldforge.org>
	* rename configure.in to configure.ac: We now require
	  autoconf 2.5x to build WFTK.  Won't affect releases.

2003-08-22 Ron Steinke <rsteinke@w-link.net>

	* Made Poll a bit more flexible and robust, to deal
	  with the idiosyncracies of skstream/Eris

2003-08-21 Malcolm Walker <malcolm@worldforge.org>
	* Minor cosmetic cleanups to build scripts
	* Bump version to 0.6.0 in CVS

2003-08-17 Al Riddoch <alriddoch@zepler.org>

	* wftk/polyreg-generic.cpp, wftk/region-generic.cpp,
	  wftk/region-generic.h, wftk/region.h: Fix new/delete of rects so
	  they always use array allocation.

2003-08-17 Ron Steinke <rsteinke@w-link.net>

	* Fixed a seg fault cause by debugging code in
	  Mouse::eventHandler().
	* Made Rect::invalid actually be invalid.
	* Added Rect::setValid().

2003-08-17 Al Riddoch <alriddoch@zepler.org>

	* wftk/region-generic.cpp: Fix new/delete of rects so they always
	  use array allocation.

2003-08-17 Ron Steinke <rsteinke@w-link.net>

	* Added GammaFunction::operator() to allow
	  direct access to shading data.

2003-08-15 Ron Steinke <rsteinke@w-link.net>

	* Changed Dialog so unhandled mouse clicks won't
	  propagate to its container.
	* FullScreenDialog now resizes when its container does.

2003-08-14 Ron Steinke <rsteinke@w-link.net>

	* Fixed a problem with Time::operator-()
	  that was causing a stall in the application
	  mainloop.
	* Stopped MultiLineEdit from ignoring the color
	  of the font it's passed in its constructor.
	* Fixed a problem with the (static) timestamp
	  used by Time::now() not being initialized
	  before it gets called by constructors for
	  other static elements.
	* Made Widget::setColor() chain to derived classes
	  for setting widget coverage, same as setBackground().

2003-08-13 Ron Steinke <rsteinke@w-link.net>

	* Changed from AutoDelete flag for widgets to proper
	  refcounting. If you weren't manually setting the flag,
	  the behavior should be the same. Refcounting makes
	  handling some things easier, like preventing modal
	  dialogs from being deleted until after their exec()
	  functions exits, and preventing from buttons from
	  being deleted while they're in the middle of emitting
	  their 'clicked' signal, even if the widget that
	  contains them is deleted by the signal handler.
	* Fixed a 'comparison of signed and unsigned' warning
	  in Widget.
	* Only add space to Label if the text in non-empty.

2003-08-13 Ron Steinke <rsteinke@w-link.net>

	* Wrapped Button signal emissions in code
	  to deal with the case where its parent
	  is destroyed during the callback.
	* Only do mutex stuff in Dialog for the
	  modal case, where it's necessary.
	* Added extra space on either side of the
	  text to the prefered size of Label.
	* Don't tile the upPic_ and downPic_ of
	  PushButton, stretch them instead.
	* Make Widget::setBackground() chain
	  to derived classes for setting the
	  coverage of the widget when the
	  opacity of the background changes.

2003-08-12 Ron Steinke <rsteinke@w-link.net>

	* Added a safety check to Dialog::exec() for the
	  case where the dialog is already open.
	* Added setOffset(const Point&) and
	  shiftOffset(const Point&) to GammaFunction,
	  to supplement the existing functions that take
	  a pair of integers.

2003-08-12 Ron Steinke <rsteinke@w-link.net>

	* Set auto-delete to false only for modal dialogs
	  (instead of all dialogs). Modal dialogs are typically
	  declared on the stack, so we don't want to delete
	  them, while non-modal dialogs almost have to be
	  created with 'new' to work properly. This change
	  allows the nice paradigm of '(new MyDialog())->exec()'
	  to run non-modal dialogs.

2003-08-11 Ron Steinke <rsteinke@w-link.net>

	* Added Dialog::isOpen().

2003-08-11 Ron Steinke <rsteinke@w-link.net>

	* Added a 'fill' option to the MultiLineEdit and Terminal
	  constructors, to make them fill space vertically when packed.
	* Fixed the annoying bug in MultiLineEdit/Terminal, where
	  they left an extra line to type text into even when they
	  were read-only.

2003-08-10 Ron Steinke <rsteinke@w-link.net>

	* Added CornerContainer, which is used by the Terrain
	  demos and uclient's Overview dialog.

2003-08-09 Ron Steinke <rsteinke@w-link.net>

	* Added FullScreenDialog and FixedDialog.

2003-08-09 Ron Steinke <rsteinke@w-link.net>

	* Separated border-handling code in Dialog
	  into a separate, derived BorderedDialog
	  class. This will allow us to write other,
	  non-bordered dialog classes.

2003-08-08 Ron Steinke <rsteinke@w-link.net>

	* Got rid of accept()/reject() nonsense in dialogs.
	  Dialog now just has a close() function and a done
	  signal. QuestionBox adds getResult() and a result signal.
	* Fixed a problem that would have caused a seg fault
	  if a modal dialog was destroyed before it returned
	  (e.g. in a handler for its done() signal).

2003-08-06 Ron Steinke <rsteinke@w-link.net>

	* Changed mask in ScreenArea::draw() and Surface::blit()
	  to be target-relative instead of source-relative,
	  making it match Font::blitString() and Surface::fill(),
	  and generally simplifying things. Also changed order
	  of arguments in ScreenArea::draw() to match Surface::blit().
	* Added a zero-argument version of RootWindow::resize()
	  to resize the window to its prefered size.

2003-08-01 Ron Steinke <rsteinke@w-link.net>

	* Don't check min size on multi-row or multi-column widgets
	  either, the way they were being handled was just plain broken.
	* Added an optional 'padding' argument to RootWindow.
	  We had previously been leaving 10 pixels around the edge
	  empty in all cases, but uclient wants 0.

2003-08-01 Ron Steinke <rsteinke@w-link.net>

	* Fixed an '&& vs. ||' bug in Table::handleResize().

2003-08-01 Ron Steinke <rsteinke@w-link.net>

	* Table doesn't pack multi-row and multi-column widgets
	  properly. Instead of assigning excess space evenly
	  among the various rows/columns, it should assign
	  to the one with the highest filler factor or, failing
	  that, expand proportional to pref size, just like
	  all the other packing stuff does. As a temporary
	  hack to get uclient working properly, I've changed
	  table to only pay attention to min size, and not
	  pref size, when dealing with multi-foo packing.
	  This needs to get fixed permanently at some point,
	  though.
	* Miscelaneous other fixes.

2003-07-06 Ron Steinke <rsteinke@w-link.net>

	* Got rid of Application::sleep() and associated code
	* Changed a few leftover #include "foo.h" to #include <wftk/foo.h>

2003-06-30 Ron Steinke <rsteinke@w-link.net>

	* Added a bunch of tests to functions that
	  use Resources to set background images, etc.
	  to handle the case where the resource being set
	  is already the current resource.
	* Optimized Movie so that when it switches frames
	  it only invalidates the area covered by the
	  frames, not the whole widget.
	* Removed some outdated entries from TODO, BUGS.

2003-06-30 Ron Steinke <rsteinke@w-link.net>

	* Got rid of the deprecated Font::getSize(char)
	  by replacing the three places it was used
	  in MultiLineEdit.
	* Got rid of a FIXME by modifying Surface::mirror()
	  to 1) not allocate memory for a temporary buffer,
	  2) lock the surface properly, and 3) not
	  convert the pixels to their color values and back,
	  since we're just swapping bytecodes around.

2003-06-28 Ron Steinke <rsteinke@w-link.net>

	* Stopped having the XPM and header image loading
	  functions in surface_io.cpp calling Painter::setPixel(),
	  which locks and unlocks the surface once for every
	  pixel written, and instead had them call Surface::writePixel()
	  directly, doing their own locking. This also has
	  the advantange of getting the painter.h #include
	  out of surface_io.cpp.

2003-06-11 Ron Steinke <rsteinke@w-link.net>

	* Added a special case to Widget::setBackground() to
	  handle the case where the background passed in is the
	  same as the current one.

2003-06-23 Al Riddoch <alriddoch@zepler.org>

	* Makefile.am: Fixed so that distcheck works.

2003-06-11 Ron Steinke <rsteinke@w-link.net>

	* Slight correction to the scaled_ fix, the
	  previous fix would have caused problems if
	  the widget started out at the exact size of
	  the background image and was later resized.

2003-06-11 Ron Steinke <rsteinke@w-link.net>

	* Modified Joystick so instances are only created
	  by user access, not joystick events. Events
	  for which there are no instances are dropped instead.
	* Added code to Pixelformat::opeartor=() so that we
	  don't unref and reref a surface when assigning
	  from a Pixelformat to itself.
	* Fixed a bug in Widget where we were relying on
	  the handleResize() handler to make sure that the
	  scaled_ copy of the background image remained
	  the same size as the widget. Since handleResize()
	  is a virtual function, derived widgets will regularly
	  break this. We now check this instead in the draw()
	  function, where scaled_ is used.

2003-05-30 Ron Steinke <rsteinke@w-link.net>
	* Documented Resource template class
	* Made RootWindow::resize() resize the window,
	  not just the widget.
	* Added <cassert> #includes a bunch of places
	  to get it to build with g++ 3.3.

2003-05-28 Al Riddoch <alriddoch@zepler.org>
	* Fix some mistakes in the wftk support.

2003-05-28 Malcolm Walker <malcolm@worldforge.org>
	* Added code to use a compiled-in "resource" style header
	  for a font.  Incomplete; needs a ./configure option
	  and a manual override for folks without perl

2003-05-28 Al Riddoch <alriddoch@zepler.org>
	* Switched to using pkg-config for sigc++ and our apps.
	  Leave in old -config script but deprecate.

2003-05-21 Ron Steinke <rsteinke@w-link.net>
	* The color constructor from std::string
	  is no longer 'explicit'. To get auto-construction
	  of arguments for functions taking const Color&,
	  it was also necessary to write a constructor
	  from const char*. Both constructors are just
	  inline calls to Color::find().
	* Changed Surface::setColorKey() to take
	  const Color& instead of const Color*.
	  Added Surface::clearColorKey() to
	  replace the previous functionality
	  of calling setColorKey() with null
	  argument. This API is hopefully clearer.

2003-05-20 Ron Steinke <rsteinke@w-link.net>
	* Changed Color::find() to return const Color&
	  instead of const Color*. It now returns
	  transparent on failure, instead of null.
	* Changed ResInval in Resource to pass
	  the name of the failed lookup, this
	  lets the Color version also look
	  in the predefined color table.
	* Added a check for EINTR (ctrl-c) when
	  select() fails, so we can exit()
	  immediately instead of throwing
	  an exception.

2003-05-13 Malcolm Walker <malcolm@worldforge.org>
	* Replaced instances of #include "foo.h" with 
	  #include <wftk/foo.h> in the API headers.
	* Documented Painter class

2003-05-11 Ron Steinke <rsteinke@w-link.net>
	* Replaced Logo class with wftk_logo named surface
	  resource.
	* Fixed a generic seg-fault-on-exit in the demos
	  by having Application delete RootWindow::instance()
	  directly instead of through a signal.
	* Got rid of some unnecessary floating point math in
	  ProgressDialog that was generating a warning
	  in g++ 3.2.

2003-05-01 Ron Steinke <rsteinke@w-link.net>
	* Improved Font to make use of freetype
	  kerning support.

2003-05-01 Ron Steinke <rsteinke@w-link.net>
	* Changed SDLFatal constructor so it calls
	  SDL_GetError() once instead of twice.
	* Wrapped the call to convertSurfaces()
	  in Application::poll() with a check that
	  RootWindow::instance() isn't null.
	* Better debug output in Mixer constructor.

2003-04-28
	* Removed 'lostMouse' handler for slider.  
	  TODO: some means of tracking when mouse movements 
		are dragging something (e.g., a slider anchor)

2003-04-16 Ron Steinke <rsteinke@w-link.net>
	* Updated README.widgets by adding
	  information on widget packing.
	* Got rid of RootWindow's poor handling
	  of dialogs as children, and moved
	  that functionality directly into
	  the Dialog class. As a result,
	  a Dialog can now be a child of
	  any widget, not just RootWindow.
	* Doc additions/fixes

2003-04-15 Ron Steinke <rsteinke@w-link.net>
	* Table now works. The method it uses
	  to distribute space for widgets that
	  span more than one row/column is
	  somewhat arbitrary, however.

2003-04-15 Ron Steinke <rsteinke@w-link.net>
	* More work on Table. Discovered much common
	  code between Box and Table (and SingleContainer,
	  to a lesser extent) could be pushed back into
	  utility functions in PackingInfo.
	* Got Video/VideoWidget/plaympeg working again.
	  SMPEG was having some problems with resizing
	  on the fly, so now you specify a scaling factor
	  when loading the video, and you're stuck with it.
	  SMPEG also draws to a buffer now, instead of
	  directly to ScreenSurface, fixing some problems
	  with X expose events and similar events on other
	  platforms.
	* Due to some invalidate bugs found while fixing
	  the video code, and a rising level of cruft
	  at certain points in ScreenArea, invalidation
	  has been split into seperate invalidate()
	  (used when you just need to redraw your widget),
	  and doExpose() (when the exposed area might have
	  changed). Fortunately, doExpose() only needs to
	  be called internally by other ScreenArea functions
	  (show(), hide(), raise(), lower(), setShape()),
	  so the user API is unchanged.

2003-04-13 Ron Steinke <rsteinke@w-link.net>
	* Started work on Table widget
	* Got rid of non-functional wfDialogBox
	  and Container generic parent classes
	* Made Box (and Table) derived from ScreenArea
	  instead of Widget, since they're just
	  doing placement. SingleContainer is
	  still derived from Widget, since its main
	  purpose is the creation of derived
	  compound widget classes.

2003-04-10 Ron Steinke <rsteinke@w-link.net>
	* Many packing tweaks and fixes. All
	  demos now build again, and everything
	  works, with the exception of video
	  in plaympeg and the meter widget
	  in ump3.
	* Got rid of the rest of the "passing
	  string as const char* instead of
	  std::string&" in the headers. The
	  noteable exception is argc/argv
	  in Application, which are kept as they
	  are because so many things expect
	  them that way.
	* Pulled SDL_PumpEvents() off a timer
	  and stuck it directly in Application::poll().
	  This way, we're sure every time we finish
	  an update that we've handled all SDL events.

2003-04-07 Ron Steinke <rsteinke@w-link.net>
	* Several widget packing bug fixes
	* Got 'alpha' and 'struct_size' demos
	  working again
	* Tweaked the packing in MessageBox,
	  QuestionBox
	* Messed around a bit with the SDL
	  window resize bug

2003-04-03 Ron Steinke <rsteinke@w-link.net>
	* Another go at the 'Font::SurfaceTable private'
	  problem

2003-04-03 Ron Steinke <rsteinke@w-link.net>
	* Made the RefMap a member of FontData,
	  instead of having FontData inherit,
	  to fix gcc 3.2 compile problem.

2003-04-03 Ron Steinke <rsteinke@w-link.net>
	* Converted to dynamic widget packing.
	  This means that widgets no longer take
	  their parent and (x,y,w,h) as arguments.
	  Instead, they're placed in containers
	  using the pack() function, and their sizes
	  are determined dynamically. Also, RootWindow
	  is now resizable by default. The packing
	  system is still somewhat buggy, but is
	  basically functional. Several of the
	  demos still need to be converted to the
	  new system.
	* Since we're no longer passing size information
	  in widget constructors, we can now pass other
	  stuff. Text widgets now take an optional
	  string, and Widget can have its background
	  set in its constructor.
	* Added a new 'packing' debug flag.
	* Added a Filler widget for use in widget packing.

2003-03-27 Ron Steinke <rsteinke@w-link.net>
	* Changed Font to make more accurate use
	  of freetype's metric information. More
	  work remains to be done (we're not using
	  kerning yet), but the basic structure is
	  at least correct now.
	* Changed Font glyphs from an indexed pallete
	  to using an alpha channel, so Font no longer
	  needs to know the background color.

2003-03-15 Malcolm Walker <malcolm@worldforge.org>
	* Add more support for OpenGL.  Convert textures
	  that we 'blitted' to the GL surface into proper GL
		textures (mechanism performs during idle loop)
		-- This is still UNSTABLE code and won't work with
		much other than the glapp demo !

2003-03-11 Ron Steinke <rsteinke@w-link.net>
	* Made the epoch_ in Time signed, so
	  we can deal with times before program
	  start more nicely.
	* Started work on widget packing mechanism
	  with the creation of ScreenArea::PackingInfo
	  and the widgets Container, SingleContainer,
	  and Box.

2003-03-10 Ron Steinke <rsteinke@w-link.net>
	* Added a Time class in timer.h so we
	  don't have to worry about the fact that
	  SDL_GetTicks() wraps every month and a half.
	* Modified Application::poll() to make sure
	  it handles _all_ SDL events every pass.
	* Moved the Video/X11/expose workaround
	  functions into ScreenSurface.

2003-03-07 Ron Steinke <rsteinke@w-link.net>
	* Added README.widgets with information
	  on writing new widgets and the wftk
	  drawing algorithm.

2003-03-07 Ron Steinke <rsteinke@w-link.net>
	* Remove wflogo from demos/Makefile.am
	* Modified the RootWindow destructor to
	  remove all child widgets before
	  destroying the ScreenSurface. This
	  will auto-destroy child widgets
	  like VideoWidget which hold a pointer
	  to the ScreenSurface.
	* Added Application::quitSlot() to return
	  a slot for Application::quit() with
	  a particular exit code. This way, users
	  don't need to muck around with SigC::bind(),
	  which many of them probably don't know about.

2003-03-07 Malcolm Walker <malcolm@worldforge.org>
	* Added the rest of the OpenGL detect-o-matic code
	  to configure.in.  Works in a cross-compiling environment too.
		Had to check for X11 on my system, hope that doesn't bust
		anyone else's.

2003-03-06 Ron Steinke <rsteinke@w-link.net>
	* Changed the debugging types enum from a straight
	  list of integers (16, 17, ...) to a list of flags
	  (1 << 16, 1 << 17, ...). You can now use
	  Debug::addChannels() to add more than one channel
	  at a time.
	* Added a fix to Video for a problem where it
	  was messing up how SDL responded to X11 expose
	  events.

2003-03-05 Malcolm Walker <malcolm@worldforge.org>
	* moved gl setup stuff into rootwindow to save on matrix
	  push / pop
	* Added GL enable flag to configure.in
	* Added quit event handler to GL demo.  popup window works, too!

2003-03-04 Malcolm Walker <malcolm@worldforge.org>
	* Support for blitting pixels to Rect on GL 
	  screen area
	* Support for buttons on GL area
	* glapp demo works completely (except event handler)
	
2003-03-03 Malcolm Walker <malcolm@worldforge.org>
	* Support for fill() on a region in GL surfaces
	* GL support enhanced, still much to do regarding
	  checks for GL and preprocessing

2003-02-28 Malcolm Walker <malcolm@worldforge.org>
	* Added basic (broken) support for GL via SDL
	* Minor cosmetic tweaks to win32 cross compiled code

2003-02-24 Ron Steinke <rsteinke@w-link.net>
	* Move the flag to turn off sound from
	  SoundMapper to Mixer. Now it turns off
	  all sounds, instead of just those sounds
	  produced by widgets.
	* Added a line to the Application destuctor
	  to free the pointers in Pointer::registry
	  the same time we free the other registries.

2003-02-24 Ron Steinke <rsteinke@w-link.net>
	* Added support back in for a software pointer.
	  Haven't tested it yet, but the new code
	  doesn't appear to have broken the hardware
	  pointer.

2003-02-18 James Turner <james@worldforge.org>
	* Changed --with-png-prefix in configure.in to set
	  CPPFLAGS instead of CXXFLAGS. This is required so that
	  AC_CHECK_HEADER picks up the -I flag.
	* Replace the SDL automake macro (AM_PATH_SDL) in
	  acinclude.m4 with an up-to-date version (from
	  SDL 1.2.5) that correct handles OS-X.
	  
2003-02-17 Ron Steinke <rsteinke@w-link.net>
	* Changed Surface blitting functions
	  to take a reference to the target
	  instead of a pointer.

2003-02-17 Ron Steinke <rsteinke@w-link.net>
	* Moved more stuff in Mouse we aren't
	  currently using behind the
	  WFTK_ENABLE_SOFTWARE_CURSOR #ifdef.
	* ScreenArea::gainedMouse() and
	  ScreenArea::lostMouse() are now
	  properly triggered by SDL_ActiveEvent
	  when the mouse enters/leaves the root
	  window, as well as by SDL_MouseMotionEvent.

2003-02-14 Al Riddoch <alriddoch@zepler.org>
	* src/videowidget.cpp: Remove default argument
	  from definition.

2003-02-14 Ron Steinke <rsteinke@w-link.net>
	* Replaced 'Idle' class with an 'update'
	  signal in Application which is emitted
	  just before drawing to RootWindow.
	* Various changes to make the code handle
	  multiple root windows better.

2003-02-14 Malcolm Walker <malcolm@worldforge.org>
	* Change Color::TRANSPARENT and Color::OPAQUE
	  to Color::WFTK_TRANSPARENT and 
	  Color::WFTK_OPAQUE.  This change is necessary
	  for windows folk.
	* Various other mingw32-related tweaks

2003-02-11 Ron Steinke <rsteinke@w-link.net>
	* Added an option to scale the video
	  to the widget size, changed plaympeg
	  to use it.

2003-02-11 Ron Steinke <rsteinke@w-link.net>
	* Fixed VideoWidget so it deals
	  with overlaying/being overlayed
	  by other widgets. There were two
	  errors, one in ScreenArea::expose(),
	  the other that the opaque region
	  in VideoWidget was not being set
	  equal to the size of the video output.
	* Added Application::waitFor(), so
	  Dialog can block properly, instead of
	  busy-waiting in Application::keepAlive().
	* Added a ScreenSurface* member to
	  Video, so we can keep track of
	  the screen instead of calling
	  RootWindow::instance()->screen() all
	  the time. This will also make the
	  transition to multiple root windows easier.

2003-02-10 Ron Steinke <rsteinke@w-link.net>
	* Moved the WindowedRoot class in the lines
	  and smoke demos into its own separate header.
	* Added the Video and VideoWidget classes.
	  Video display works fine, but it's not
	  respecting the widget's clipping region
	  yet. Video uses the SMPEG code that used
	  to be in Music.
	* Added Fatal and SDLFatal exceptions for
	  various code to throw instead of calling
	  exit().
	* Added an Idle class, with a callback that
	  is called every update right before
	  RootWindow::sync(). This is part of the
	  machinery for getting the threaded
	  drawing of SMPEG video to respect
	  our widget model.
	* Set the background color of RootWindow to
	  opaque black in its constructor, so
	  that it always overwrites the remnants
	  of previous screen updates.
	* Moved the static Music::volume_ member
	  into Mixer, so both Music and Video
	  can use it.
	* Changed Region's operator&(), operator|(),
	  operator^(), and operator-() from member
	  functions to friends, so Rect() & Region()
	  can use Rect's auto-promotion to Region
	  in the same way Region() & Rect() can.
	* Added a mutex to ScreenSurface, for the
	  benefit of threaded drawing with SMPEG.
	  This used to be done with a mutex in
	  RootWindow.
	* Added Surface::setAsChild(), so a surface
	  could become the child of another at
	  some other time that in its constructor.

2003-02-10 Malcolm Walker <malcolm@worldforge.org>
	* The results are in... rotozoom (with smoothing off) is
	  about 20% faster than sge's scaling functions.  With 
		smoothing on it is about the same speed, but with
		better looking results.  scaledBlit() have been
		ported to the new code (surface.cpp)
	* API addition: smoothing flag (boolean) in 
	  scaledBlit methods of class Surface.
		If true, smoothing algorithms will be
		applied.

2003-02-07 Ron Steinke <rsteinke@w-link.net>
	* Fixed the configure check for smpeg.h to
	  properly get passed SDL_CFLAGS
	* Updated the demos to remove deprecated code.
	* Now that I'm getting smpeg.h found by
	  configure, fixed the long-neglected
	  plaympeg and ump3 demos. ump3 now works
	  fine. plaympeg works but at a rate
	  of one frame per multiple seconds,
	  probably a bug in the way the demo is
	  using SMPEG.
	* Added the mutex that was previously taken out of
	  RootWindow back in to ScreenSurface, since
	  the SMPEG code in plaympeg needs it.
	* RootWindow is now derived from Widget instead of
	  ScreenArea, so you can set the root window background
	  directly instead of having to add a toplevel
	  fullscreen widget.
	* Fixed a bug in ScreenArea::show(), that was
	  causing the background from the quit button
	  in the 'smoke' demo to not initially get drawn.

2003-02-06 Ron Steinke <rsteinke@w-link.net>
	* Changed Widget::setBackground() to take one of:
	  + a Surface::Resource*. In this case, it handles
	    memory management by bumping the resource's
	    ref count.
	  + a const Surface&. In this case, it makes
	    its own copy of the surface.
	  + a string, which it uses to look up
	    a Surface::Resource from Surface::registry.
	  All of these cases give better memory management
	  than the previous API, which accepted a
	  const Surface*, and required the user to
	  make sure the Surface it refered to stayed
	  around. Did the same thing for several
	  other background-setting functions
	  (PushButton::setUpPic(), etc.).
	* Fixed a bug introduced the last time I
	  touched the debugging code, added more
	  debugging messages.
	* Fixed a bug in ScreenArea::show()
	  that was causing a drawing error in
	  the 'smoke' demo.
	* Changed the default font returned by
	  Font::registry in the case of a failed
	  search from an invalid font to Font::textFont.
	* Fixed a bug in the Surface copy constructor,
	  where it wasn't setting the palette in the copy
	  if it was indexed.

2003-02-04 Ron Steinke <rsteinke@w-link.net>
	* Fix for nowhere's bug: I was treating
	  flags in an SDL_ActiveEvent as an
	  enumeration.
	* Reworked ResourceRegistry to have
	  a nicer API and not require so much
	  code duplication in the individual
	  resource types.
	* Moved old debug macros and FOO_RES()
	  resource macros into new header
	  deprecated.h, cleaned them out
	  of the library code.
	* Added an abort() function to
	  Application, so you can bypass user
	  quit handlers when necessary.
	* Took generic background-setting
	  code in most widgets (where Foo's
	  background is set to the resource
	  "foo_surface" and Foo's background
	  color is set to the resource "foo_color"),
	  and moved it to a protected function in
	  Widget, where it can be called from the
	  various constructors.
	* Some documentation work, especially
	  in Debug
	* Gave the RootWindow constructor a default
	  value for bpp.

2003-02-03 Ron Steinke <rsteinke@w-link.net>
	* Added new Joystick class to handle joystick events.
	* Changed Mouse signals gotmousefocus and lostmousefocus
	  to gotMouse and lostMouse to match the rest of the
	  API. Also added capitalization to Mouse::mousemove,
	  Mouse::mouseclick, Focus::gotfocus, and Focus::lostfocus.
	* Got correct copyright information for
	  new ScreenArea class.

2003-02-03 Ron Steinke <rsteinke@w-link.net>
	* Added an optional argument to the SoundMapper()
	  constructor to keep it from ever calling Mixer, so
	  you can keep the widgets from initializing sound
	  on their own.  Added a check for a command line
	  argument ("--wftk-no-widget-sounds") to take
	  advantage of this, and changed the demos so they
	  don't load samples if SoundMapper isn't going to
	  use them.
	* Added checks for "--wftk-debug-foo" command line
	  arguments to turn on debugging flags.
	* Fixed 'simple' demo so that when you hit return
	  in the LineEdit, it passes a '\n' as well as the
	  text to the Terminal and clears the LineEdit.
	* Changed shutdown procedure to shut down the video
	  subsystem before deleting Mixer.  On my system,
	  Mixer takes about half a second to shut down, so
	  this makes the application window vanish much sooner.
	* Changed PushButton back to using Widget::setBackground(),
	  but now the "up" and "down" images are set in
	  response to changes in button state, instead of
	  every draw cycle. Also now lookup color resources
	  in the constructor instead of every draw cycle.
	  Also made the hasFocus() part of the draw function
	  respect the masking Region.
	* Added ScreenArea::name() to extract the class
	  name from the dynamic type info. Currently
	  works on my system (g++ 2.95.4), probably
	  need a bunch of #ifdefs to make it work on
	  different systems. Ultimately would like to
	  use this to reduce some of the code duplication
	  for setting Widget properties from resources
	  (background, text color, etc.).
	* Added a bunch of missing includes (dialogbox.h,
	  messagebox.h, poll.h, questionbox.h, region.h,
	  slider.h) to wftk.h.
	* Added a new demo (struct_size). It doesn't do much,
	  but is useful for testing, as it instantiates almost
	  all the classes in the library.

2003-02-02 Ron Steinke <rsteinke@w-link.net>
	* Did the final create() -> draw() changeover,
	  in LineEdit, MultiLineEdit, and Terminal.
	  It turns out these classes don't so much
	  have different drawing functions, but
	  have basically the same draw() function
	  with some parts different. The code's now
	  implemented that way, using some
	  additional virtual functions, and it's
	  much more readable and has much less
	  duplication.
	* Better encapsulation is LineEdit and
	  MultiLineEdit, so more members can be
	  private instead of protected.
	* Changed gainedKeyboard()/lostKeyboard()
	  event handlers to gainedFocus()/lostFocus(),
	  for a more consistent API.
	* Added a Region masked version of Font::blitString().
	* Added a rect() function to Surface.
	* Some tweaks to event handlers to get
	  the right widget behavior.

2003-02-01 Ron Steinke <rsteinke@w-link.net>
	* Got rid of deprecated processEvent() handlers
	  in favor of mouseEvent(), buttonEvent(), keyEvent().
	  We no longer use the events in event.h.
	* Added gainedMouse(), lostMouse() handlers to
	  ScreenArea, since some widgets need them.
	* More debug code cleanup.
	* Fixed PushButton's drawing code to
	  respect the masking Region, also
	  cached scaled versions of upPic_ and
	  downPic_ instead of having Widget
	  create them every draw cycle.

2003-02-01 Malcolm Walker <malcolm@worldforge.org>
	* Add some code to safe_set.h to silence warnings
	  in gcc 3.2.1: specifically, using typedef 
		typenames to wrap Map::iterator and similar
		calls.  Also changed resources.h
	* Put some documentation into debug.h

2003-02-01 Ron Steinke <rsteinke@w-link.net>
	* Got startupProc(), shutdownProc(), eventloopProc()
	  out of Application. If you're doing a derived
	  class, just use the constructor/destructor.
	* Application::quit() can now specify an exitcode.
	* Made the update time of the SDL event pump
	  timer in Application user-setable. Since
	  it's now variable speed, got rid of
	  the public timer signals in application
	  and made widgets create their own timers.
	* Changed Instance to instance() in Application,
	  to conform with the rest of the singleton
	  classes.

2003-02-01 Ron Steinke <rsteinke@w-link.net>
	* More debug stuff, including a debug
	  replacement for std::endl which doesn't
	  need <iostream> when DEBUG isn't defined.

2003-01-31 Ron Steinke <rsteinke@w-link.net>
	* Wrote Surface::blend(), which
	  is like Surface::fill() except
	  that it takes the alpha channel
	  of the color into account.
	* With the exceptions of LineEdit,
	  and the derived classes MultiLineEdit
	  and Terminal, all widgets now use draw()
	  instead of create(). This allowed me
	  to put the create() emulation code
	  in LineEdit::draw() instead of Widget::draw(),
	  which appears to have fixed the drawing
	  problems.
	* More debugging interface improvements

2003-01-31 Ron Steinke <rsteinke@w-link.net>
	* Drawing loop rewrite:
	  + Widget and RootWindow now derived from ScreenArea,
	    ScreenArea is responsible for all widget nesting
	    issues. Both Widget and RootWindow have suffered
	    massive code changes.
	  + In the old drawing model, widgets drew to a buffer
	    surface in their create() functions. Now, widgets
	    draw directly to the root window in their draw()
	    functions. They are passed the root surface, a
	    masking region which specifies which pixels the widget
	    is to draw, and their offset relative to the root window.
	    There is also a drawAfter() function, for when a widget
	    needs to draw over the widgets it contains (e.g.
	    Widget::drawAfter() is used to draw a grey texture over
	    disabled widgets). When a widget needs to redraw due to
	    internal changes, it should call invalidate(), which
	    will insure draw() is called on the next update.
	  + Drawing through the old create() functions has some
	    support (provided by Widget's draw() function), but is
	    somewhat buggy, especially with respect to transparency
	    and background image issues.
	  + Since Widget::draw() is being used to handle backwards
	    compatibility, child widgets who wish to chain their
	    draw functions up to Widget::draw() should instead
	    call Widget::drawBackground() for the time being.
	  + DirectSurface is now deprecated, since anything
	    it was used for can be just as easily accomplished
	    with a child surface of RootWindow::screen().
	* Added a Region masked Surface::blit()
	* Moved most of Widget's focus handling into Focus
	* More tweaks to the Event handler system
	* De-virtual-ized a bunch of functions in Surface
	  that had no reason to be virtual
	* Improvements to the debugging interface
	* Fixes to the demos to deal with all these changes

2003-01-30 Ron Steinke <rsteinke@w-link.net>
	* Moved checking for focus back into
	  Widget event handlers, to keep
	  more private stuff private
	* Copied focus stuff into ScreenArea,
	  in preparation for basing Widget off
	  of it
	* Changed signals to emit SDL_Event classes
	  instead of (less functional) wftk::Event
	  classes

2003-01-29 Ron Steinke <rsteinke@w-link.net>
	* Got rid of recursive calls between Widget and
	  RootWindow which determined which widget
	  got mouse events, instead we now call
	  Widget::getContainer() in Mouse::handleEvent()
	* Deprecated Widget::processEvent() in favor
	  of individual handlers Widget::mouseEvent(),
	  Widget::buttonEvent(), Widget::keyEvent()
	  for the different event types. processEvent()
	  will live on only until we can redo the
	  event handlers in current widgets under
	  the new scheme.
	* Changed ScreenArea to take its coordinates
	  relative to its parent instead of the RootWindow
	* Commented out Widget exposed/hidden/enabled/disabled/
	  deleted/gainedMouse/lostMouse/gainedKeyboard/lostKeyboard
	  signals. They don't appear to be used, and any reaction
	  to this type of event is almost certainly part of
	  the widget's event handling implementation, implemented
	  through virtual functions.

2003-01-26 Ron Steinke <rsteinke@w-link.net>
	* Changed Widget data members from protected
	  to private, by a combination of adding
	  a few new accessor functions and making
	  RootWindow a friend.
	* Tweaked ScreenArea a bit.
	* Got rid of Widget::close(), as it wasn't being
	  used. Close apparently means 'hide and delete
	  at the next update'. Once we get a better
	  scheme for widget memory management, it'll
	  be equivalent to hide() and unnecessary.
	* Got rid of Widget::alloc_rect_, which is always
	  equal to Widget::rect_.

2003-01-27 Al Riddoch <alriddoch@zepler.org>
	* src/region-generic.cpp: Fix function pointer
	  null check to be C++ legal.

2003-01-26 Ron Steinke <rsteinke@w-link.net>
	* Started work on ScreenArea class to take
	  over some of the low-level functionality
	  of Widget, and handle overdraw better
	  by keeping track of exposed and updated
	  regions on the root window

2003-01-26 Ron Steinke <rsteinke@w-link.net>
	* Added a Region class (copied from gtk+, who
	  copied it from somewhere in X) to use
	  with the coming rework of the drawing loop

2003-01-26 Ron Steinke <rsteinke@w-link.net>
	* Added support for socket polling in the
	  Application mainloop through the Poll class

2003-01-26 Ron Steinke <rsteinke@w-link.net>
	* Cleaned up event handling, in particular:
	  + Moved the code in Event::create()
	    into the individual event constructors.
	  + Moved most of the event handling in
	    Application into Focus, Mouse, and
	    RootWindow (things like gaining/losing
	    focus, etc.).
	  + Now handle SDL_QUIT event by default,
	    with a call to the (virtual) Application::quit().
	    Derived application classes can override this
	    to change quit behavior.
	  + Changed most initial event handling
	    (in Application, RootWindow, Focus, and Mouse)
	    to use SDL_Event instead of wftk::Event.
	    This lets us cut wftk::Event down to the
	    three kinds of event (button, mouse, and key)
	    that actually appear in the wftk public API.
	* Replaced RootWindow and Mouse pointers in
	  Application with RootWindow::instance(),
	  Mouse::instance(). Created Focus::instance(),
	  and turned the static member functions (all of
	  them) into ordinary member functions.
	* Changed the signals in Application from
	  static to ordinary members, and moved
	  most of them (e.g., lostmousefocus)
	  into RootWindow, Mouse, and Focus.
	* Moved the functionality of Application::init()
	  into the RootWindow constructor. This slims
	  down the API, and will simplify things if we
	  ever get multiple root windows.
	* Moved most of the drawing loop code from
	  Application into RootWindow and Mouse,
	  and added checks to let the application
	  mainloop run without a root window.
	* Got rid of '#define uapp wftk::Application::Instance'
	* Made singleton classes, with the exception of
	  Application and RootWindow, auto-instantiate
	  themselves.
	* Put sound initialization in the Mixer constructor
	  instead of in Application. That way, we don't initialize
	  sound unless we use it.
	* Got 50ms granularity out of the Application mainloop.
	  SDL is still pumped for events on the 50ms timer,
	  but the mainloop runs as often as the fastest timer
	  needs it to.
	* Wrapped the software cursor code in Mouse with
	  #ifdef WFTK_ENABLE_SOFTWARE_CURSOR, we can enable
	  it again when we get it working.
	* Widget now contains Rect as a data member instead
	  of inheriting from it.
	* Some fixes in the backend of Pixelformat.
	* Fixes to widget and demo code to deal with API changes.

2003-01-25 Malcolm Walker <malcolm@worldforge.org>
	* Cosmetic changes to documentation index and
	  RPM generator.
	* Tag and release for 0.5.0

2003-01-24 Ron Steinke <rsteinke@w-link.net>
	* Cleaned up Kai's libpng check, combined it
	  with a check for libz, got rid of the old
	  version of the check

2003-01-23 Ron Steinke <rsteinke@w-link.net>
	* Changed configure.in to add SIGC_LIBS to LIBS
	  instead of LDFLAGS, just like the rest of the
	  libraries
	* Added a TODO entry about the --release flag
	  passed to libtool

2003-01-22 Al Riddoch <alriddoch@zepler.org>
	* Re-wrote interface version handling to
	  to be more sane.

2003-01-07 Ron Steinke <rsteinke@w-link.net>
	* Got config.h out of exported headers,
	  mostly through a cleanup of the sound
	  classes (Sound, Music, Sample, Mixer).
	  We also no longer export SDL_mixer.h
	  and smpeg.h.
	* Turned Sound into a virtual base class.
	  Previously, it contained an (unnecessary)
	  copy of the Mixer::instance() pointer,
	  and some virtual functions which were
	  overridden in all derived classes.
	* Gave SoundMapper and Mixer their own
	  instance() functions, instead of having
	  Application own the instances.

2002-12-31 Ron Steinke <rsteinke@w-link.net>
	* Tweaked Color, Painter, Pixelformat,
	  GammaFunction docs, added Logo and
	  ScreenSurface.
	* Added docs to keysym.h, still need
	  to include them somewhere
	  in the docs

2002-12-31 Ron Steinke <rsteinke@w-link.net>
	* Added documentation to Pixelformat,
	  Color, Font, Mutex, Painter, Point,
	  Rect, StringHash<>::Map, Surface,
	  and Timer

2002-12-31 Malcolm Walker <malcolm@worldforge.org>
	* Added documentation to Resources, rootwindow,
	  button, color, and widget classes

2002-12-31 Ron Steinke <rsteinke@w-link.net>
	* Stopped caching copies of flags from the
	  underlying SDL_Surface in ScreenSurface,
	  got rid of some SDL version checks which
	  are obsolete now that we require SDL 1.2
	* Stopped exporting some headers which are
	  only for internal library use.
	* Added config.h #include to all .cpp files,
	  got rid of some other #includes which were
	  superfluous.

2002-12-31 Ron Steinke <rsteinke@w-link.net>
	* Got rid of PALETTE_TAG in MultiLineEdit,
	  the markup index specified by FONT_TAG
	  now specifies both font and color.
	* Got rid of warnings in terrain2 demo build.

2002-12-30 Ron Steinke <rsteinke@w-link.net>
	* Mild code cleanup in Font implementation,
	  fixed a potential seg fault.

2002-12-30 Ron Steinke <rsteinke@w-link.net>
	* Figured out that the 'palette' version of
	  Font::blitString() was being used as a workaround
	  for a problem with the Font class which the
	  recent changes have fixed (being able to set
	  the color of a font loaded as a resource).
	  Changed the code to use the new functionality,
	  got rid of the workaround and the offending
	  version of Font::blitString().

2002-12-30 Ron Steinke <rsteinke@w-link.net>
	* Got rid of an extremely non-thread-safe global variable.

2002-12-30 Ron Steinke <rsteinke@w-link.net>
	* Remove freetype2 flags from wftk-config,
	  since we don't export the freetype2 headers.

2002-12-30 Ron Steinke <rsteinke@w-link.net>
	* Purged slist tests from configure.in,
	  since we no longer use slist.

2002-12-30 Ron Steinke <rsteinke@w-link.net>
	* Improved timing checks in debugging code
	  in 'gamma' demo.

2002-12-28 Ron Steinke <rsteinke@w-link.net>
	* Fixed GammaFunction::setBitShift() for negative
	  arguments.

2002-12-27 Ron Steinke <rsteinke@w-link.net>
	* Font::getString() really fixed now,
	  we get vertical alignment right.

2002-12-27 Ron Steinke <rsteinke@w-link.net>
	* Got rid of hordes of static Color instances,
	  instead added Color::find() and a Color
	  constructor to look up colors from string
	  names.
	* Changed Surface::setTransparency() to
	  Surface::setColorKey().
	* Fixed Font::getString() so parts of
	  letters below the baseline get drawn.

2002-12-27 Ron Steinke <rsteinke@w-link.net>
	* Changed Font to use internal reference counting.
	  You can now make copies of a Font, which makes
	  it much easier to use the internal Font resources
	  with different colors (just make a copy and change the
	  color of the copy). In the process, the font drawing
	  in the 'alpha' demo got fixed, and the freetype headers
	  got moved from font.h to font.cpp.
	* Added a static Font::textFont() function, to handle
	  accessing the "text_font" resource.
	* Fixes to other classes to deal with changes in the
	  Font API.
	* Moved foo.h to be the first header included in foo.cpp
	  in several files.

2002-12-26 Ron Steinke <rsteinke@w-link.net>
	* Got rid of fields in Surface (alpha_, transCol_, etc.)
	  which duplicate information in the underlying SDL_Surface.
	  This allowed the removal of a lot of code whose purpose was
	  to keep these values synced.
	* Renamed Surface::lighten_darken() to Surface::gammaShift().
	* Added Surface::setWMIcon(), so Application would no longer
	  need to be a friend of Surface.
	* Changed Pixelformat to hold a pointer to SDL_Pixelformat
	  instead of a copy. This simplifies passing a surface's
	  internal SDL_Pixelformat as a Pixelformat.
	* Replaced #includes of rootwindow.h, mouse.h, mixer.h,
	  and soundmapper.h in application.h with forward
	  declarations. Had to #include rootwindow.h in directsurface.h
	  and add several #includes to .cpp files in compensation.
	* Added '#ifdef DEBUG #include <iostream>' to debug.h.
	* Replaced <iostream> includes in several headers with
	  <iosfwd>, included <iostream> in .cpp files.
	* Defined new constants Color::TRANSPARENT and Color::OPAQUE
	  to be SDL_ALPHA_TRANSPARENT and SDL_ALPHA_OPAQUE.
	* Got rid of the color constructor from an unsigned int,
	  since this functionallity is a (nonportable) duplication
	  of Pixelformat::mapToColor().
	* Changed 'protected' to 'private' in several classes.
	* Added GammaFunction::setShift(), which allows for
	  a generalization of the (x << 2, y << 1) hack
	  Karsten used in uclient to get GammaFunction
	  to act like a 1024x512 texture.
	* Miscellaneous cleanups.

2002-12-20 Ron Steinke <rsteinke@w-link.net>
	* Changed Pixelformat to be a wrapper for SDL_Pixelformat
	  instead of attempting to duplicate its functionality
	* Mild tightening up of the lighten_darken() code
	  using Rloss, Gloss, Bloss (now that I know what they are)

2002-12-19 Ron Steinke <rsteinke@w-link.net>
	* Changed Rect interface, as the old one was
	  confusing with respect to off-by-one errors.

2002-12-19 Ron Steinke <rsteinke@w-link.net>
	* Gave RootWindow a mutex() accessor, instead of
	  making Application and DirectSurface friends so
	  they could access it. Also clobbered the mutex
	  in GlideRootWindow, since the one that gets used
	  is in its parent RootWindow.
	* Replaced #include<iostream> in the headers with
	  #include<iosfwd>, de-inlining one operator<<()
	  definition.
	* Modified Painter so you can change the target
	  Surface. Also now allow null Surface argument.
	* Cleaned up Point and Rect, giving Rect a more
	  complete set of accessors and getting rid
	  of >, >=, <= comparisons and making < well
	  ordered, for use by std::map. Also re-added
	  Rect <-> SDL_Rect conversion functions,
	  making the Rect constructor from SDL_Rect
	  explicit to avoid spontaneous conversions.
	  There may still be off-by-one errors in Rect.
	* Documentation improvements.

2002-12-17 Ron Steinke <rsteinke@w-link.net>
	* Got rid of the ids in SafeSet, and just use the pointers
	  directly. This works because the code doesn't actually
	  require that the ids of stale pointers are distinct
	  from those of fresh ones.

2002-12-16 Ron Steinke <rsteinke@w-link.net>
	* Changed classes inheriting 'public SigC::Object' to
	  inherit 'virtual public SigC::Object' instead, so
	  multiple inheritance will work

2002-12-16 Ron Steinke <rsteinke@w-link.net>
	* Created the 'SafeSet' class, so that it would be
	  safe to add/remove timers while iterating through the
	  timer set and emitting their signals

2002-12-13 Ron Steinke <rsteinke@w-link.net>
	* Declared a bunch of single-file globals static, to keep
	  them out of the linker namespace
	* Tweaked the StringHash<>::Map typedef to be a little more
	  natural

2002-12-12 Ron Steinke <rsteinke@w-link.net>
	* Wrote copy constructor, operator=() for GammaFunction,
	  so they work properly
	* Removed unnecessary point.h #include in pixelformat.h
	* Added debugging output to 'gamma' demo to check how much the
	  clock tick is lagging behind its stated 50ms. Judicious
	  testing using early 'return' bailouts indicates the primary
	  slowdown is in Widget::setBackground(), with Surface::lighten_darken()
	  making no noticeable difference.

2002-12-11 Ron Steinke <rsteinke@w-link.net>
	* Added typename niceness to ResourceRegistry template

2002-12-11 Ron Steinke <rsteinke@w-link.net>
	* The changes to GammaFunction have broken the
	  various gammablit() functions, so I've commented
	  blitters.cpp and its associated headers out
	  of the makefiles until we either fix them, or
	  (most likely) delete them in favor of using
	  Surface::lighten_darken().
	* Pulled hash_map namespace dependency in headers
	  into a separate file by clever use of the StringHash
	  struct, got unnecessary slist includes out of timer.h

2002-12-11 Ron Steinke <rsteinke@w-link.net>
	* Changed Surface::readFromXPM(), GammaFunction::read()
	  from const char** back to char**, C++ apparently
	  doesn't like making this change automagically
	* Added GammaFunction testing to the 'gamma' demo

2002-12-10 Ron Steinke <rsteinke@w-link.net>
	* Fixed copy constructor, operator=() for Surface to work
	  properly on surfaces with an alpha channel
	* The 'gamma' demo now works for a constant gamma,
	  need to expand it to also test GammaFunction

2002-12-10 Ron Steinke <rsteinke@w-link.net>
	* Changed lighten_darken() to take a reference to a
	  GammaFunction instead of a pointer
	* More work on 'gamma' demo

2002-12-10 Ron Steinke <rsteinke@w-link.net>
	* Promoted GammaFunction to a full class, with load-from-xpm
	  capablities in a member function instead of external
	* Started work on a demo to test Surface::lighten_darken()
	* Fixed the makefiles so 'make demos' works from the
	  root directory
	* simplified includes, mouse.h doesn't need widget.h
	* some doc cleanups

2002-12-09 Ron Steinke <rsteinke@w-link.net>
	* Reworked resources, so we have a separate map for each
	  type of resource, instead of a combined map for all of
	  them

2002-12-09 Malcolm Walker <malcolm@worldforge.org>
	* Switch around STL iterators to preincrement
	* fix lines demo to work properly
	* Spelling fixes in configure.in

2002-11-05 Michael Koch <konqueror@gmx.de>
	* configure.in: disable --enable-static by default.

2002-11-04 Al Riddoch <alriddoch@zepler.org>
	* configure.in: Clean up use of CPPFLAGS vs CXXFLAGS

2002-11-03 Al Riddoch <alriddoch@zepler.org>
	* Drop sigc++ dependency back to 1.0.3.

2002-11-03 Malcolm Walker <malcolm@worldforge.org>
	* Fix font blitting into a surface smaller than the height
	of the source surface(s).
	* Add some forward declarations and some more documentation.
	If this code is stable it will be 0.4.99.

2002-10-30 Malcolm Walker <malcolm@worldforge.org>
	* src/application.cpp, mouse.cpp, mouse.h: Switched to use of
	hardware-accelerated mouse pointer by default.  Added code to 
	support (single) custom SDL_Cursor (pointer).  Also added some
	very cryptic code to use the same hardcoded pointer as HW default
	as is used for the software pointer.

2002-10-28 Michael Koch <konqueror@gmx.de>
	* src/font.h: Cleaned up FT2 includes.
	* src/font.cpp: Cleaned up FT2 includes (removed them, they are
	already in font.h). Replaced assert(false); with return; to really
	fail (even when compiled with -DNDEBUG). Fixed renderChar: Replaced
	bitmap with fac_->glyph->bitmap everywhere.
	Thanx to Malcolm Walker for his help.
	
2002-10-24 Malcolm Walker <malcolm@worldforge.org>
	* Finish port to Freetype 2 library.  Use anti-aliasing
	  from FT2 and metric advancing for each glyph.

2002-10-22 Martin Pollard <circlemaster@blueyonder.co.uk>
	* version.h.in, marshal.h: some comments for doxygen.
	* foot.html: unused replaced by footer.html removed.
	* TODO: removed SigC++-1.2 from this, it's done, added a request
	  for malcolm or rsteinke to document marshal.h

2002-10-21 Malcolm Walker <malcolm@worldforge.org>
	* bump required version of SDL to 1.2.0.  Will remove #ifdefs that
	  handle older SDL version soon.
	* Added support for signal to hide mouse pointer, on loss of mouse focus
	* mouse.h: new showPointer() and hidePointer() methods, for above

2002-10-21 Martin Pollard <circlemaster@blueyonder.co.uk>
	* application.cpp: renabled some calls to the marshalled signals that
	  I #if'd out earlier.

2002-10-21 Malcolm Walker <malcolm@worldforge.org>
	* src/*_data.h: new datafiles for mouse pointer (default) and 
	  logo.  
	* src/logo.cpp, mouse.cpp, surface_io.cpp: modified load-from-header
	  routines to use new, simpler code produced by GIMP 1.2.1

2002-10-21 Martin Pollard <circlemaster@blueyonder.co.uk>
	* demos/terrain2.cpp: changed ref of flatbrush.ttf for wf_opal.ttf

2002-10-21 Martin Pollard <circlemaster@blueyonder.co.uk>
	* Fixed BoolMarshal for SigC++-1.2.
	* demo/alpha.cpp, demo/lines.cpp, demo/simple.cpp, demo/terrain.cpp,
	  demo/terrain2.cpp, demo/ump3.cpp, demo/plaympeg.cpp:
	  Added include of object_slot.h and changed the this to a *this in
	  slot calls to fix compiler confusion.	

2002-10-21 Ron Steinke <rsteinke@w-link.net>
	* Wrote BoolMarshal to replace FixedMarshal usage
	* Replaced FixedMarshal calls in Application.cpp/h with them.

2002-10-21 Martin Pollard <circlemaster@blueyonder.co.uk>
	* configure.in: Updated SigC++ check to fail without and to support
	  Sigc++-1.2 in addition to SigC++-1.0
	* resources.h.in, widget.h timer.h, application.h, mixer.h,
	  soundmapper.h: SigC++-1.2 support
	* application.cpp, application.h: disabled FixedMarshal calls in
	  Sigc++-1.2 we will want to fix this.
	* movie.cpp, application.cpp, button.cpp, lineedit.cpp, listbox.cpp
	  messagebox.cpp, multilineedit.cpp questionbox.cpp:
	  Added include of object_slot.h and changed the this to a *this in
	  slot calls to fix compiler confusion.
	* widget.h: removed second #include of <list>
	* ChangeLog.libuta: reverted wftk's to uta's, this must have got 
	  accidently hit by the changeover.
	* version.cpp, version.h.in, wftk.m4, wftk-config.in, mixer.h: changed
	  a few UTA to WFTK
	* demo/alpha.cpp, demo/lines.cpp, demo/simple.cpp, demo/terrain.cpp,
	  demo/terrain2.cpp: Changed a few more UTA to WFTK.

2002-10-20 Malcolm Walker <malcolm@worldforge.org>
	* Streamlined the demos a bit; made them compilable under
	  gcc 3.x and added them back into the main source tree.
	* New logo !

2002-10-19 Malcolm Walker <malcolm@worldforge.org>
	* Added lots of stub documentation
	* Changed 'uDialogBox' to 'wfDialogBox' - hacks begat hacks
	* directed Doxygen to ignore undocumented classes 

2002-10-16 Malcolm Walker <malcolm@worldforge.org>
	* Initial import of wftk into worldforge CVS.  Transfer
	  copyright to me, rename files from .cc to .cpp extension,
	  cite Karsten in source files, change to 'wftk' namespace.
	* This is version 0.4.99 of wftk.
	* See 'ChangeLog.libuta' for older changes.
	* port from doc++ to doxygen; add Doxygen-specific
	  files.  Will start working on docs soon !
	
