discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Look and Feel


From: Nicolas Roard
Subject: Re: Look and Feel
Date: Mon, 14 Feb 2005 14:23:34 +0000


Le 14 févr. 05, à 13:29, Jesse Ross a écrit :

Camaelon will have extra overhead -- but it's just because it uses
pixmap instead of drawing things "by hand" using NSBezierPath et al.

In other words, if you were to implements a new "native" look using
pixmaps it will be as slow as camaelon.

...

As I said, the actual architecture is very close to that with the
GSDrawFunctions class. Camaelon extends that class and modify widgets
so they use it, and thoses modifications will hopefully rolled in
GNUstep in the future. So you'll have a clean separation of the way
widgets looks -- all the drawing will be in GSDrawFunctions.


So, the interface is currently created using vector paths, if I'm reading
this correctly?

Yes. All the drawings on GNUstep are vectoriel. Don't forget that on NeXT there was DisplayPostScript ! GNUstep ditched DPS because the implementation we had was buggy and slow, but the model is the same -- that's why you don't have antialiasing using the xlib backend for example, while you have it for free in the art backend...

How difficult would it be to create a new UI using vectors
instead then?

It will be more difficult, because you will need to *code* it. Using pixmaps is much easier.

If/when we have a good and *fast* NSSVGImageRep (for example) or even a NSEPSImageRep or NSPDFImageRep, we could use SVG, EPS or PDF instead of images...

It's probably already doable (ViewPDF provides it afaik) but it's also probably very slow..

Would that have to happen directly in the -gui code, or is
there a way to make a theming engine that uses vectors instead?

er... like I said a few times, there's not really a difference with something that is in the -gui code, and something that is in a gui theme bundle...

Objective-C is a runtime-based language; as such the messages are sent and mapped at runtime. That's why you can poseAs: a class -- ie, say to the runtime, "here is my new shiny class A, make all the call to that other class B automatically redirected to my class A".

A gui "theme bundle" is a code loaded at runtime by gnustep; in general (well, the one that exists, Camaelon and WildMenu..) just categorize (== replace some methods of some classes) or poseAs (==replace some class) existing gui code.

Anything that's doable in gui is doable in a theme bundle..

 That would
be much faster, correct, since we're not relying on pixmaps?

actually, yes and no. Using NSBezierPath or other PS operators to create a new look is probably faster than compositing a lot of images. But it's more work, and on the other hand, images allow you to do some good caching, so the speed isn't too much impacted, and images let you create more detailed look. Using something a NSPDFImageRep or other "vectoriel" format would probably not be very interesting, because you would need to rasterize the PDF before displaying it. But well it could be fun to test.

--
Nicolas Roard
"Any sufficiently advanced technology is indistinguishable from magic."
 -Arthur C. Clarke





reply via email to

[Prev in Thread] Current Thread [Next in Thread]