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); }
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); }
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); }
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); }