← Back to team overview

kicad-developers team mailing list archive

Graphics Abstraction Layer (was Re: wxDC & wxGraphicsContext Test)


--========GMX54831266790362142982 Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Hi Dick,

> > Ideas yes, but I'm sceptical about the integration into wxWidgets.
> Another question is, if it's really better than a Cairo or Open GL
> implementation.
> > 
> Well we'd have to define "better". Don't know yet. Please be sure 
> and look at both parts, not just the API (of which we don't ask much), 
> the second part was the graphics stack, i.e. what is it built on.

"Better" means currently for me mainly the drawing speed and the quality of the needed method for KiCad. I've ported my benchmark to QT - and can say in general that the coding style, the documentation, features are indeed superiour to wxWidgets. Also you can mix OpenGL + 2D drawing.
The drawing speed (of the software renderer) seems to be not better than Cairo/wxGC. I had for my line example 0.5 frames/s (Cairo: 0.8 frames/s and wxGC 0.5 frames/s). If I'd rewrite KiCad I'd surely choose QT. 
(I'll test QPainter over OpenGL later ..)
For KiCad I still think it's easier to use OpenGL directly & Cairo.

> Please look at the library stack, and do your benchmark. I would gladly 
> live with a C++ wrapper over a nice C or C++ foundation, just to avoid C.

Of course, AFAIK KiCad is a C++ project.

> I wrote the 2nd Java virtual machine ever implemented, and did it in C++.

Well, if I'd have to choose, I'd implement everything in Java ..


OK, I've started already and I'll implement the new graphics backend(s) for KiCad. I'll use a "Graphics Abstraction Layer" that we can use multiple graphics libraries, like OpenGL directly or Cairo (wxGC). I've studied Computer Graphics at our university, thus I think it's an interesting project for me.

I've attached a small example, how it could rougly look like, written in JavaScript. You need just an actual browser (Firefox or Chrome (faster)).

My specification for the GAL:

• Draw graphics primitives (world space):
∘ Line
∘ Polyline
∘ Rectangle (filled / unfilled)
∘ Circle (filled / unfilled)
∘ Convex / concave polygon (filled / unfilled)
∘ Arc
∘ Stroked Text
• Draw the cross-hair cursor
• Draw the grid
• Handle zoom
• Handle screen <-> world transformation
• Independent vector/matrix operations
• Resizing
• Be compatible to: Windows, Linux, (MAC)

GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01
 --========GMX54831266790362142982 Content-Type: application/zip; name="THSchematic.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="THSchematic.zip"

[Attachment content not displayed.] --========GMX54831266790362142982-- 

Follow ups