2/25/2006

Alpha 1: 

Changes:

1. Run configure script on Mac OS X (with --disable-nls), which
configures for X11
2. Create an XCode project and bring in all source and header files
necessary to build
3. Bring mac driver, renamed to osx, into project 
4. Replace some legacy mac osx functions with their modern equivalents.
5. Remove some code from mac driver that is no longer necessary for
modern Mac OS X

The only changes were made within the osx driver and the driver.c
file.  I was able to leave every other XaoS source file untouched.


Known Issues:

1. It only compiles as a debug build.  There are a few errors I need
to fix for the release build to work.
2. When viewing a tutorial, the menu item for "stop replay" doesn't
currently show up.
3. It sometimes crashes due to running out of stack space.  Usually 
when applying certain filters or moving from windowed driver to full
screen.
4. It crashes when the display pixel depth is not 32-bit.
5. Doesn't work under XaoS 3.2 yet.  Get an error on startup. (It
works under 3.1.3)


TO DO:

1. Replace some deprecated functions with their modern equivalents:
        - Replace QuickDraw with Quartz 
        - Replace Event Manager with Carbon Event Manager (polling vs modern
notification)
        - A few other deprecated functions
2. Create native dialog boxes as in the Win32 driver.

__

6/1/2006

Alpha 2

Known Issues:

1) Currently ignores all keyboard input.  I have not put keyboard event handling in place yet. (Mouse input does work.  Use ctrl to zoom out and shift to pan.)
2) Does not use native Mac OS X menus yet.  Instead it uses the built-in XaoS X11-style menus.
3) Does not support saving to png.  I am having trouble getting libpng to link with XaoS (I think because I didn't build libpng as a universal binary).
4) Does not include any tutorials, help, or example files in the pre-built executable.  I think I should be able to fix this soon.


The latest source is also attached.  To build, follow these steps:

1) Start with a freshly extracted XaoS-3.2.1 source archive (no configure or previous makes)
2) Unzip the attached osx.zip in the src/ui/ui-drv directory
3) Copy src/headers/config/config.autoconf to src/headers/config.h
4) Replace param.c and drivers.c in the src/ui directory with the attached versions

The only change to drivers.c is that I added osx_driver to the drivers struct.

The only changes in my version of param.c is that I added an if statement to ignore the "-psn_x_xxxxxxx" parameter that Mac OS X passes on the command line when launching a program via Finder.  Without this, when launching XaoS via its icon, it immediately quits and prints out the usage information to the console.log.

I know it's not perfect, but I think it is close enough to check into CVS.  The main advantage over building the X11 version from source:

1) Normal Mac users can just run the binary--doesn't require installing developer tools or understanding how to compile.
2) Users don't have to have the X11.app installed and running--it's a native Mac OS application.
3) Hopefully soon, it will behave exactly like a native Mac OS X application.

With all the Macs present in schools, I think having a native Mac OS X binary available could be a really great teaching tool.  I am excited to help contribute to XaoS's future improvement.

Please let me know any feedback or questions you have.

--

6/15/2006

Beta 1


Changes since last release:

* Keyboard input now works on dialogs and shortcuts.  

* Native Mac OS X menus have been implemented.  All deprecated menu functions have been removed.

* xstdio.c replaced with custom version for mac that uses CFBundle framework to load tutorials/help files/etc from the application bundle.

* Properly loads help files and catalogs.

* Replaced classic events with carbon events.  All mouse, keyboard, and high-level events are now handled.

* An experimental cocoa driver is included in addition to the carbon driver.  This one has some problems because I had to make it multi-threaded in order to get the cocoa framework to load, and I think cocoa's framework is causing a lot of friction with the XaoS driver framework.  Screen updates are not synchronized so a lot of flickering occurs and the frame rate isn't very high.

--

Beta 2

Changes since last release:

* Keyboard input has been implemented for all keys supported by XaoS.

* Fixed bug where window events were not handled if driver was reinitialized.

* Tutorials now play back.

* Random examples now load.

* menu.c: Since Mac OS X doesn't allow menu items directly in the root menu, I put "Stop Replay" for animroot in the UI menu (conditionalized #ifdef OSX_DRIVER)

* menu.c/ui.c: Mac OS X applications have their own quit command in the Application menu.  So I removed the quit menu and preceeding separator from the file menu (conditionalized #ifdef OSX_DRIVER) 

* menu.c: Swapped order of UI and Help menus in animroot to comply with Human Interface Guidelines - this should be for all platforms so i have not conditionalized it.

--

Beta 3

* Support saving to png. libpng is included as a private framework.

* Change icon to XaoS default palette

* Provide standard Mac OS keyboard shortcuts for applicable functions -- redo, undo, save, load

* Repackaged as a disk image with Readme file

--

Beta 4

* Fixed render option

* Fixed color bug on Intel-based Macs

* Added -windowsize and -autoscreensize command line arguments

--

3.2.2

* Disabled alloca, which was preventing XaoS from rendering images over 2500x2500

* Added fullscreen driver

* Upgraded libpng to 1.2.12


Known Issues:

* Catseye fractal does not render properly.  This is not unique to the OSX driver because it renders improperly on the X11 driver too.  Perhaps the code for Catseye is broken on PowerPC processors?

* Edge detection, edge detection 2, and pseudo 3d filters do not work.  This is specific to my driver because they work on the X11 driver.

* Need to replace QuickDraw with Quartz since QuickDraw is now deprecated.

* Full screen driver

* Native dialog boxes a la Win32 driver.

* Does not yet support i18n.  Need to do some work to get gettext to compile and link.

