Placing buttons on the main screens border

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Placing buttons on the main screens border

Till Harbaum / Lists
Hi,

i am still maintaing the maemo port and have just updated to svn revision 1724.
Everything still seems to be working fine ...

The next-gen maemo devices (formerly known as internet tablets) currently in the
makings and two things are inportant for me:

- there won't be any hardware buttons anymore
- there's an accelerometer in the device

I am currently trying to work around the first problem. As you might remember, the
units have a 800x480 display and thus i have plenty of unused touchscreen space:
  http://www.harbaum.org/till/maemo/enigma.jpg

This is perfect for some buttons to replace the hardware keys. My question now is:
How do i place a button there? My borders/backgrounds are drawn in display.cc
like this:

void GameDisplay::draw_borders (GC &gc) {
    RectList rl;
    rl.push_back (gc.drawable->size());
    rl.sub (get_engine()->get_area());
    rl.sub (inventoryarea);

    for (RectList::iterator i=rl.begin(); i!=rl.end(); ++i) {
        clip(gc, *i);
        blit(gc, 0, 0, enigma::GetImage("menu_bg", ".jpg"));   // background image
        blit(gc, 0, 0, enigma::GetImage("enigma_logo3_small"));  // lop left enigma logo
    }
}

Now i'd need some little help. How do i add buttons to this? I'd at least like to have
them drawn to the borders. I have tried this:

void GameDisplay::draw_borders (GC &gc) {
    RectList rl;
    rl.push_back (gc.drawable->size());
    rl.sub (get_engine()->get_area());
    rl.sub (inventoryarea);

    printf("drawing borders\n");

    for (RectList::iterator i=rl.begin(); i!=rl.end(); ++i) {
        clip(gc, *i);
        blit(gc, 0, 0, enigma::GetImage("menu_bg", ".jpg"));
        blit(gc, 0, 0, enigma::GetImage("enigma_logo3_small"));

        gui::Widget *but = new gui::StaticTextButton(N_("ABC"));
        but->draw(gc, Rect(5,5,70,70));
    }
}

But this gives me the ABC centered on the top left screen edge (so only
the bottom half / left half of ABC is visible on screen). This is due to the
fact that get_area in the button draw routine returns 0,0,0,0 and the rectangle
i provide is just ignored.

How do i draw buttons? I could add them statically to the background
image, but that's an ugly solution and e.g. doesn't work with internalization.
I'd really need some small help by someone with some knowledge about
the gui stuff. I don't need any actually handlers and actually i think it would
even be simpler if my touchscreen patched version of client.cc handles
this itself. Does this make sense?

And once that's done i can easily add accelerometer support which could
make the game a real pearl on the maemo5 devices.

Till


_______________________________________________
Enigma-devel mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/enigma-devel