Wednesday, April 26, 2006

Graphic-Forms 0.3.0 released

The next release of Graphic-Forms (version 0.3.0), a CL library for Windows GUI programming, is now available. This is definitely pre-alpha code, so be prepared for missing features, bugs, and API changes in subsequent releases.

Download a release tarball from here:

The primary changes in this release are as follows:

  • implemented graphics-context methods for the typical drawing operations and pen attributes; see the new test program invoked by (gft::run-drawing-tester)

  • implemented a representation of fonts and font data, including an API for looking up fonts based on font data

  • implemented font metrics and text metrics querying

  • expanded image drawing operations to support double-buffering

  • expanded the classes representing different window types: top-level represents primary application windows, panel represents child-windows, and the root-window class represents the desktop

  • formalized the window parent and owner concepts with documentation and functions

  • implemented the display class to represent the monitor attached to the system

  • implemented new window style attributes to help applications choose whether the system should automatically repaint the background

  • provided maximum-size and minimum-size functions to allow applications to constrain window sizes

  • revised label controls to support either text or images

  • implemented the file-dialog class which encapsulates the standard open/save dialog

  • made other bug fixes and resource usage cleanup

Please consult README.txt for other details about this release.

The main project website is:

Friday, April 7, 2006

Graphic-Forms progress report

I’m making progress towards the next Graphic-Forms release. Here is a brief status update:

  • implemented graphics-context methods for the common drawing operations and pen attributes; there is a new test program invoked via (gft:run-drawing-tester) that exercises these operations

  • implemented a representation of fonts as well as font data and fleshed out the API for creating fonts from font data as well as obtaining font metrics; the aforementioned drawing tester program does exercise fonts

  • expanded the representation of windows, such that there are now classes representing top-level windows and child windows (the latter are called ‘panels’ in GF), as well as a root-window class representing the desktop and a display class representing the system’s monitor

  • also added new window style attributes to help applications choose whether the system should automatically repaint the background or not

  • did some testing and tracked down some embarrassing GDI handle leaks

  • currently developing a simple blocks game as a more complete demo and as a test bed for me to learn how Cells works

  • filed a bug with CLISP concerning stdcall callbacks, which impacts a couple of important functional areas in GF (the test case I submitted might be further reducible and I will work on that)

I’d like to get some more basic infrastructure done before the 0.3.0 release, such as:

  • in particular, complete my research of Cells and decide how/where to integrate that (in particular, I consider this a prerequisite for any further work on layout managers)

  • also more controls

  • at least a couple of the common dialogs

  • and of course more testing

Also, a short while after 0.2.0 went out, I entered ~70 bugs into the tracker at SourceForge. At this early stage, I view most of those as ToDo entries because they are missing features rather than unanticipated problems. Just today, Erik Enge announced that now has Trac available, and I will certainly investigate further and perhaps decide to migrate issue tracking away from SourceForge.