[openbeos] Re: Visual design stuff again

  • From: John Duncan <groovestar@xxxxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Sat, 27 Sep 2003 12:01:45 -0400

Thought I'd pop out of lurk mode for a second here...

I seem to remember R5 having support for different "decorators", I definitely remember a Mac-looking one among others. Reading DarkWyrm's website, it seems to me that this functionality will also be in R1. (See the 7/15/2003 news post at http://thor.prohosting.com/bpmagic/ )
So what's all this talk about extra complexity and hardcoding?
Wouldn't any new look just be another decorator, the code for which already exists?
Just my personal opinion now, but I really don't like the look of Stubear's designs, even compared to tho old-fashioned R5 look... the gonx designs on the other hand would definitely entice me to give R1 a try.

Well, back to lurking for me


Simon Taylor wrote:

The look of R5 controls is hard-coded. Providing the possibility to
between different looks would require massive changes, namely a
to support this (i.e. a skinning framework). Since it was agreed,
that no
major feature should be added to R1, this is just not going to

I was thinking similar to windows XP - not a whole skinning API (there
is a whole different discussion on whether we actually want that, but
that is definately one for GE ;-)). Namely, the ability to switch
between "old" and "new", both hardcoded.

Yes, there would be two hardcoded looks in the Draw() method. I dont necessarily see this as a hack though, as there are already a lot of conditions in each Draw method:

if (IsEnabled())
if (Value())
} else {
if (IsFocus())
} else {
...it would just be a case of wrapping another if (NewLook) around that.

I don't see why you would need to do design-specific stuff in other methods for the huge majority of widgets. OK, so a curved button might need a different check for a hit in MouseDown, but other than that the sizes of the controls and the active areas should stay the same.

If we want skinning, this is obviously not the way to go about it, and R1 is also not the place for that kind of thing. But if we want a new look, while keeping the possibility of switching back to the old one, it seems like an acceptable solution.

As you imply, it is by no means certain that OBOS will ever provide full skinning support. I know from private mails that Michael and Erik are both opposed. That is obviosuly a discussion for GE. But if it is decided not to implement skinning support, will the widget set always look like R5?

If the decision is made to implement full skinning support in a future release, just about all the widget code will need rewriting - it will be much more work than just "undoing" my proposed changes.

Without trying this out, it's very difficult to know exactly how many changes are going to be needed. I fully agree with you that if a lot of different methods need conditional code in them, then it would seem like too much of a hack. That's why I still intend to try it with a few controls to see what is really needed. I still believe that it could be a worthwhile change for R1.
Finally I think a new look also fits in quite well with the R1 philosophy - not adding additional functionality to the controls, or completely new controls - just the existing controls implemented better (as in with a more modern appearance). I think implementing a control differently visually is akin to implementing an API differently in code.


Other related posts: