hi all,

i've put up my newest version of GnomeForest as

i initially sent it off to miguel, quartic and raph as a libart-bug report,
and have since had to forward it to ~10 or so people. so to not clutter
my sent-mail folder any further, you can pick the test code through ftp now ;)

GnomeForest is supposed to go into libgnomeui as soon as libart handles
svp intersection correctly. for the uninvolved, here's the initiall ChangeLog
entry that outlines it purpose (what may have been left out there is that
it also serves me as a convenient display widget for ArtPixbufs or
could serve as one for GdkPixbuf as well):

        * gnomeforest.[hc]:
        a sprite engine based on libart, implemented as a gtk widget.
        - the widget simply displays a libart-rendered buffer that is exactly as
          big as its allocation, thus it implements double buffering.
        - it keeps two utas, one for the area that needs to be repainted (e.g.
          due to expose events or queue_draw) and one for the area that needs to
          be rerendered (due to sprite movement, showing or hiding).
        - screen display is actually done in two steps: first neccessary
          regions are rerendered from render_uta. secondly, the screen is
          updated from paint_uta (paint_uta will always incorporate render_uta).
        - the actuall rendering and painting is done from idle handlers only,
          that way users can apply multiple transforms to the sprites, and their
          vpaths and svps get only updated shortly before the renderer needs
          them. (i'll make the priorities configurable at some point, e.g. a
          demo widget will want to use low priorities, while a game will
          probably want high priorities).
        - collision detection (CD) happens when the sprite svps got updated.
          the current libart intersection code is pretty slow (and buggy),
          especilly when its "collinear" warnings are triggered.
        currently debugging code is left in place and can be activated through
        setting of struct _GnomeForest flags:
        shade_svps - draw the svps that are used for uta computation and
                     intersection with 0xffffff80 on top of the sprites
        show_utas  - show the computed uta rectangles (white outline with black
                     cross, this actually gives a nice impression on how smart
                     and effective utas actually work)
        disable_cd - disable collision detection at all
        debug_cd   - print CD areas and mark the intersection points


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