Standard GUI framework inspired by Qt

Xavier Bigand via Digitalmars-d digitalmars-d at puremagic.com
Wed Mar 11 01:22:28 PDT 2015


Le 10/03/2015 02:25, karl a écrit :
> Please don't use SDL2 and such as basis, or OpenGL with
> glBegin+glReadPixels without FBOs and PBOs (not Pbuffers). I'm a GL
> driver dev (userspace) for a smaller company, and I see too much gore in
> popular software like that (gnome3 is the most-horrific). A
> fully-featured GUI with GL needs only a thin wrapper for
> glXGetProcAddress, GL context creation, BitBlt-like things and
> font-glyph cache (or better yet, signed-distance-field text rendering).
> Something like this:
>
> Base (sans clipping, I haven't ported it from asm yet):
> https://github.com/idinev/pub_toys/tree/master/Blitters/oDraw
>
> SDF text:
> https://www.mapbox.com/blog/text-signed-distance-fields/
>
> Also, GL should be optional, just like with Qt; it introduces noticeable
> lag of 16 to 48ms while being a resource hog unnecessary for most apps.
> I could help with implementing the abstraction layer and create a
> software blitter (I was professionally doing such stuff before, for GUI
> toolkits and stuff; but then again this stuff is trivial).
>
> A 32-bit backing-store is always vital (DDB+GDI dibsection, GL texture
> and such). Qt has it (and implemented really-well) and that's the first
> pixel-related thing we should implement. BGRA8 will be the best format
> (blue in LSB).
> A 9-cell blit will also be vital functionality.

That the way we choose with DQuick. I use SDL2 under linux only cause I 
was unable to set up a window with xcb. Under Windows the window is 
created by native win32 functions.

For glyph I use fontconfig + freetype and I generate atlases,...

I started a DirectX renderer, but it doesn't work for the moment. So 
pluggin a software renderer would be possible too.

DQuick is just like QtQuick, a simple render coupled to a language that 
support property bindings, if you want more advanced GUI components like 
widgets the user have to create them based on primitives (images, border 
images,...).

But just like Qt do, advanced components can be added after to the 
library as an extension (QtQuick.Controls).

A such GUI library is in theory simpler to do, cause there is no tricky 
things to implement in it to follow native UI of platforms,...


More information about the Digitalmars-d mailing list