Ejemplo n.º 1
0
static void my_draw( BotViewer *viewer, BotRenderer *renderer )
{
    //Enable transparency
    glEnable(GL_BLEND);
    glEnable(GL_DEPTH_TEST);

    BotLcmglRenderer *self = (BotLcmglRenderer*) renderer->user;

    // iterate over each channel
    GList *keys = bot_g_hash_table_get_keys(self->channels);

    for (GList *kiter = keys; kiter; kiter=kiter->next) {
        lcmgl_channel_t *chan = g_hash_table_lookup(self->channels,
                                                   kiter->data);
        glPushMatrix();
        glPushAttrib(GL_ENABLE_BIT);

        if (chan->enabled) {
            // iterate over all the messages received for this channel
            for (int i = 0; i < chan->frontbuffer->len; i++) {
                bot_lcmgl_data_t *data =
                    g_ptr_array_index(chan->frontbuffer, i);

                bot_lcmgl_decode(data->data, data->datalen);
            }
        }
        glPopAttrib ();
        glPopMatrix();
    }
    g_list_free (keys);
}
Ejemplo n.º 2
0
static void my_draw( Viewer *viewer, Renderer *renderer )
{
    RendererLcmgl *self = (RendererLcmgl*) renderer->user;

    // iterate over each channel
    GList *keys = bot_g_hash_table_get_keys(self->channels);

    for (GList *kiter = keys; kiter; kiter=kiter->next) {
        lcgl_channel_t *chan = (lcgl_channel_t*) g_hash_table_lookup(self->channels, 
                                                   kiter->data);
        glPushMatrix();
        glPushAttrib(GL_ENABLE_BIT);

        if (chan->enabled) {
            // iterate over all the messages received for this channel
            for (int i = 0; i < (int) chan->frontbuffer->len; i++) {
                botlcm_lcmgl_data_t *data = (botlcm_lcmgl_data_t*)
                    g_ptr_array_index(chan->frontbuffer, i);
                
                bot_lcmgl_decode(data->data, data->datalen);
            }
        }
        glPopAttrib ();
        glPopMatrix();
    }
    g_list_free (keys);
}
Ejemplo n.º 3
0
static void on_param_widget_changed (BotGtkParamWidget *pw, const char *name, void *user)
{
    BotLcmglRenderer *self = (BotLcmglRenderer*) user;

    // iterate over each channel
    GList *keys = bot_g_hash_table_get_keys(self->channels);

    for (GList *kiter=keys; kiter; kiter=kiter->next) {
        lcmgl_channel_t *chan = g_hash_table_lookup(self->channels,
                                                   kiter->data);

        chan->enabled = bot_gtk_param_widget_get_bool (pw, kiter->data);
    }
    g_list_free (keys);

    bot_viewer_request_redraw(self->viewer);
}
Ejemplo n.º 4
0
static void on_clear_button(GtkWidget *button, BotLcmglRenderer *self)
{
    if (!self->viewer)
        return;

    // iterate over each channel
    GList *keys = bot_g_hash_table_get_keys(self->channels);
    for (GList *kiter = keys; kiter; kiter = kiter->next) {
        lcmgl_channel_t *chan = g_hash_table_lookup(self->channels, kiter->data);
        // iterate over all the messages received for this channel
        for (int i = 0; i < chan->frontbuffer->len; i++)
            bot_lcmgl_data_t_destroy(g_ptr_array_index(chan->frontbuffer, i));
        g_ptr_array_set_size(chan->frontbuffer, 0);

    }
    g_list_free(keys);

    bot_viewer_request_redraw(self->viewer);
}