Some serious work done so far...
1. Have setup the following build environments:
a. browser6 - THINK C 5.0, 68k classic
b. browser7 - MPW 3.2, 68k classic
c. browser8 - MPW 3.5 Fat CFM-68k and CFM-PPC
d. browser9 - Carbon CFM with 'plst' using MPW 3.5
e. browserx - Carbon Macho using Xcode
f. minihttp - Win32 using VC++ 4.0
2. Using gestalt heavily to determine host features, idea is that application will use as much as is available dynamically
a. if supports apple events then install opendocument and quit
b. if supports FSSpec calls then use FSpOpen/FSpCreate etc instead of using working directorys
c. determine which menu bar to load depening whether its aqua or not
3. Colour support for GIFs
This is a big change, can now render 8 bit GIFs from monochrome, to hundreds, thousands and millions of colours.
If it's 32bit quickdraw it will support ditherCopy on CopyBits, if it is using Color QD 1.0 to 1.2 then convert each line to full 32bit to get dithering to work.
Switching screen resolutions will cause images to re-render to best capability.
4. Colour support for windows, dialogs and controls.
5. Uses Navigation Services if available.
6. Offscreen bit maps use GWorlds on Carbon
7. Use Carbon accessors as much as possible to make code modern even though running on a lowly Classic.
8. Tested on the following environments
Classic running 6.0.8
LC-II running 6.0.8
Quadra700 running AU/X 3.1.1
Quadra 605 running 8.1
Performa 6200 running 8.6
BW G3 running Tiger
Both browser6 and browser7 will run on 6.0.8.
Obviously the CFM builds require CFM, and the Carbon builds need Carbon.
The Carbon CFM version runs on my 8.6 and natively on Tiger.
My next step is to add OpenTransport calls to the Carbon version.
Why am I putting in all this work on other versions other than 6? Simple anwsers are
(a) cross platform development improves robustness as a problem lurking in one environment can be shown up by another
( B) use the best development and debugging environments around, eg Xcode and Visual C++.
© once this beast gets into the wild I want it to look as good as it can in any environment.
I found some curious bugs in the MPW 3.2 compiler which caused much frustration, basically it has problems with some post increment constructs, one which only caused a 68040 or PPC emulation of 68040 to blowup. So now the MPW 3.2 build does work on all environments.