After the Hove show some of us went to a pub and discussed a bit about
the future of the QL. On the drive home I talked some more with Jochen
and in the end we decided to take the development of SMSQ/E into our
(well, probably mainly my) hands. Please no discussion about open
source etc at this point, discuss that with Tony. With the situation
as it is I'm unfortunately(!) the only one who can change anything
(related to SMSQ/E that is).
I have already done some stuff and before any of that gets "official"
I'd like to get your opinions.
We agreed that the main problem is that we have the colour drivers but
basically don't use them.
So the first thing I did was to implement the BGCOLOUR command in a
way that it doesn't need any additional memory. I thought it's
ridiculous that a simple blue (or whatever) background could take up
more than 1MB of RAM. Now it doesn't need one byte. BGIMAGE still
needs much ram but there one needs a copy of the image anyway, so
that's ok. I expect that there are no objections so far ;-)
The second problem I addressed (and I really want your input on that
one) is that WMAN still can't use the extended colours. Fortunately
all WMAN routines and data blocks related to colour use 16 bit wide
values, the upper 8 bits are just never used. Therefore I defined a
new colour format:
%00000000cccccccc handle colour exactly like before
%00000001pppppppp use lower byte as palette index
%00000010pppppppp use lower byte as system palette index
%00000011gggggggg use lower byte as gray scale value
%1rrrrrgggggbbbbb 15 bit RGB value
The system palette is an idea found on other operating systems to give
applications a common look. So in Windows for example the colour of
the title bar is defined only once in the system and all windows can
use the standard colours for their own look (i.e. instead of defining
that a component is blue or whatever one can set it to have the
standard colour for buttons, whatever this may be).
I still need to do the system palette stuff, but apart from that
everything else is already implemented this way (what doesn't mean
that this is fixed and can't be changed anymore, I just did it to play
around with the possibilities). An example image of a simple PE
application I patched to use the new colours can be seen here:
http://www.kilgus.net/images/new-wman.png
Next question, what should be included in the system palette? My
preliminary list is the following:
Window paper
Window border
Title paper
Title ink
Title border
Sub window paper
Sub window ink
Sub window border
Button current item border
Button available paper
Button available ink
Button selected paper
Button selected ink
Button unavailable paper
Button unavailable ink
Grid paper
Grid border
Grid current item border
Grid button available paper
Grid button available ink
Grid button selected paper
Grid button selected ink
Grid button unavailable paper
Grid button unavailable ink
Scroll bar arrow
Scroll bar paper
Scroll bar section
Once again, this just means that an application programmer can use
those constants ($0200 = window paper, $0201 = window border etc.) to
make his application look like the configured system standard. But
this is no must.
OK, that's enough from me I think. I have some more ideas but those
still need some work. I'd really like to have some feedback, I think
this is a quite important thing. And I hope once all this is available
you PE programmers out there will use it and make the QL a better and
more "serious" looking platform.
Cheers, Marcel