microraptor gui an immediate compromise
Øyvind Kolås <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CAKjrkdOawF66_Gztex=SPa2DWp_TEj2oTmz_Rd3UOjBf4z+5rg@mail.gmail.com> |
Microraptor gui, is an experimental user interface framework built on top of, one can even say integrated with cairos drawing model. While drawing with cairo, you can register pointer/touch callbacks for the current path. The information about these callbacks (the path, transform, callback, eventmask) are kept in a list; stored in painting order. During hit detection one has the ability to stop propagation. The coordinates of pointer events get transformed to user coordinates; thus you handle interaction and drawing in the same coordinate system. The ideas experimented with in microraptor gui are variants on the theme of immediate mode UI libraries. More extreme variations of this theme[3] which runs the render loop for every single event, and uses inline procedural code instead of callbacks. Callbacks are a bit painful in C – but if you write in a language with closures instead the resulting structure of the code is similar to the imgui style; but without the one frame lag of interaction, and full fps / at least rate of event coordinates coming in re-rendering. Other notable features of microraptor gui contains the start of a CSS styling engine and a single-pass XHTML/SVG renderer using the above infrastructure. The framework seems powerful, and I keep discovering ways to improve how various type interactions/interface can be implemented concisely with this approach. For more, browse the code[1], peek at some screenshots[2], watch a video[3] from FOSDEM of an earlier state, attend a talk in Toronto the 1st of May at Libre Graphics Meeting[5] or a lua slanted talk in Oslo during OSDC Nordic[6] the 10th of May. Øyvind Kolås Links: 1: https://github.com/hodefoting/mrg/ 2: http://pippin.gimp.org/mrg/ 3: http://iki.fi/sol/imgui/ 4: http://video.fosdem.org/2015/devroom-desktops/microraptor_gui__CAM_ONLY.mp4 5: http://libregraphicsmeeting.org/ 6: http://act.osdc.no/osdc2015no/ -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo