GdkPixbuf * gitg_label_renderer_render_ref (GtkWidget *widget, PangoFontDescription *description, GitgRef *ref, gint height, gint minwidth) { PangoContext *ctx = gtk_widget_get_pango_context(widget); PangoLayout *layout = pango_layout_new(ctx); pango_layout_set_font_description(layout, description); gint width = MAX(get_label_width (layout, ref), minwidth); cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width + 2, height + 2); cairo_t *context = cairo_create (surface); cairo_set_line_width (context, 1); render_label (context, layout, ref, 1, 1, height, FALSE); guint8 *data = cairo_image_surface_get_data (surface); GdkPixbuf *ret = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width + 2, height + 2); guint8 *pixdata = gdk_pixbuf_get_pixels (ret); convert_bgra_to_rgba (data, pixdata, width + 2, height + 2); cairo_destroy (context); cairo_surface_destroy (surface); g_object_unref (layout); return ret; }
/* * Recursive function responsible to create fields, position them and setting * the modifiable fields. All of this from a service dictionary. * To keep the cursor from moving on signal, a string is affected to mark each * field. This is used by repos_cursor(). * @param longest_key_len The longest length for a label * @param pos The index in main_fields[] * @param jobj The service dictionary * @param is_obj_modifiable Use to set the whole object as modifiable (usefull * for IPv4.Configuration for example) * @param obj_str The string representing the "hash" of a surrounding object */ static void render_fields_from_jobj(int longest_key_len, int *pos, struct json_object *jobj, bool is_obj_modifiable, const char *obj_str) { bool is_autoconnect = false, is_modifiable = false; struct userptr_data *data; json_object_object_foreach(jobj, key, val) { main_fields[*pos] = render_label(longest_key_len, key); assert(main_fields[*pos] != NULL); (*pos)++; is_modifiable = string_ends_with_configuration(key); is_modifiable |= is_obj_modifiable; if (json_object_get_type(val) == json_type_object) { move_field(main_fields[(*pos)-1], ++cur_y, cur_x); cur_y++; render_fields_from_jobj(longest_key_len, pos, val, is_modifiable, key); is_modifiable = false; } else { // insert the page delimiter if (cur_y >= win_body_lines-4) { cur_y = 1; set_new_page(main_fields[(*pos)-1], TRUE); move_field(main_fields[(*pos)-1], cur_y, cur_x); nb_pages++; } main_fields[*pos] = render_field(longest_key_len, val); assert(main_fields[*pos] != NULL); is_autoconnect = strcmp(key, key_serv_autoconnect) == 0; if (is_modifiable || is_autoconnect) { field_opts_on(main_fields[*pos], O_EDIT); field_opts_off(main_fields[*pos], O_BLANK); set_field_back(main_fields[*pos], A_UNDERLINE); } else field_opts_off(main_fields[*pos], O_EDIT); // Specific operations on fields config_fields_type(*pos, is_autoconnect, obj_str, key); field_opts_on(main_fields[*pos], O_NULLOK); data = malloc(sizeof(struct userptr_data)); data->dbus_name = strdup(get_str_key()); data->pretty_name = NULL; set_field_userptr(main_fields[*pos], data); (*pos)++; } cur_y++; }
static void cb_draw_chart(gpointer data) { Reader *reader = (Reader *)data; gchar *text = render_label(reader); gkrellm_draw_chartdata(reader->chart); gkrellm_draw_chart_text(reader->chart, DEFAULT_STYLE_ID, text); gkrellm_draw_chart_to_screen(reader->chart); g_free(text); }
static void create_panel(GtkWidget *vbox, Reader *reader, gint first_create) { // GkrellmKrell *k; GkrellmStyle *style; // GkrellmPiximage *krell_piximage; gchar *text; if (first_create) reader->panel = gkrellm_panel_new0(); else gkrellm_destroy_krell_list(reader->panel); /* Create a krell. A Krell structure is allocated and linked into | the list of krells pointed to by panel->krell. */ style = gkrellm_meter_style(DEFAULT_STYLE_ID); //GTK2 style->label_position = LABEL_CENTER; // krell_piximage = gkrellm_krell_meter_piximage(DEFAULT_STYLE_ID); // k = gkrellm_create_krell(panel, krell_piximage, style); // k->full_scale = 30; /* Configure panel calculates the panel height needed for the "Plugin" label. | and the krell. */ reader->panel->textstyle = gkrellm_meter_textstyle(DEFAULT_STYLE_ID); gkrellm_panel_configure(reader->panel, "SNMP", style); // reader->panel->textstyle = gkrellm_panel_alt_textstyle(DEFAULT_STYLE_ID); /* Build the configured panel with a background image and pack it into | the vbox assigned to this monitor. */ //dep: gkrellm_create_panel(vbox, reader->panel, gkrellm_bg_meter_piximage(DEFAULT_STYLE_ID)); gkrellm_panel_create(vbox, mon, reader->panel); gkrellm_monitor_height_adjust(reader->panel->h); if (first_create) { gtk_signal_connect(GTK_OBJECT (reader->panel->drawing_area), "expose_event", (GtkSignalFunc) panel_expose_event, NULL); reader->tooltip=gtk_tooltips_new(); } /* refresh the display */ text = render_label(reader); gkrellm_dup_string(&reader->panel->label->string, text); g_free(text); }
void render_world(sem_render_context* ctx, sem_game* game) { sem_world* world = &(game->world); cairo_rectangle(ctx->cr, 0, 0, world->max_x, world->max_y); cairo_set_source(ctx->cr, ctx->style->canvas); cairo_fill(ctx->cr); render_tiles(ctx, world); for (uint32_t i=0; i < game->labels->tail_idx; i++) { render_label(ctx, game->labels->items[i]); } for (uint32_t i=0; i < world->trains->tail_idx; i++) { render_train(ctx, world->trains->items[i]); } }
void render_cylinder(GLdouble diameter,const GLdouble p1[3],const GLdouble p2[3],const char *label) { GLdouble v[3],dist,ax,r[3]; GLUquadricObj *obj; int is_z=0; v[0]=p2[0]-p1[0]; v[1]=p2[1]-p1[1]; v[2]=p2[2]-p1[2]; dist=sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]); if (dist == 0.0) return; v[0] /= dist; v[1] /= dist; v[2] /= dist; /* Compute angle and rotation axis */ ax=180.0/M_PI * acos(p5glove_dot(z_front,v)); p5glove_plane(z_front,zero,v,r); obj=gluNewQuadric(); gluQuadricDrawStyle(obj,GLU_SMOOTH); gluQuadricOrientation(obj,GLU_OUTSIDE); /* Fun fun. Draw a cylinder between two points. */ glPushMatrix(); glPushMatrix(); glTranslated(p1[0],p1[1],p1[2]); gluSphere(obj,diameter,10,10); glRotated(ax, r[0], r[1], r[2]); gluCylinder(obj,diameter,diameter,dist,10,1); glPopMatrix(); glTranslated(p2[0],p2[1],p2[2]); gluSphere(obj,diameter,10,10); render_label(diameter,label); glPopMatrix(); gluDeleteQuadric(obj); }
void render_hand(void) { int i; int mode=GL_FRONT; GLUquadricObj *obj; obj=gluNewQuadric(); gluQuadricDrawStyle(obj,GLU_SMOOTH); gluQuadricOrientation(obj,GLU_OUTSIDE); for (i=0;i < 8;i++) { double pos[3]; char label[2]={0,0}; double size = 0.05; p5glove_reference_led(glove,i,pos); glMaterialfv(mode,GL_AMBIENT,ambient_ir); diffuse_ir[0]=0.8; diffuse_ir[1]=0.8; diffuse_ir[2]=0.8; #if 0 if (info.ir[i].visible > 0) { size *= 1.0+(5.0-info.ir[i].visible)/5.0; diffuse_ir[0]=0.0; } #endif glMaterialfv(mode,GL_DIFFUSE,diffuse_ir); glPushMatrix(); glTranslated(pos[0]*WORLD_SCALE,pos[1]*WORLD_SCALE,pos[2]*WORLD_SCALE); label[0]='0'+i; render_label(size,label); gluSphere(obj,size,10,10); glPopMatrix(); } gluDeleteQuadric(obj); }
void gitg_label_renderer_draw(GtkWidget *widget, PangoFontDescription *description, cairo_t *context, GSList *labels, GdkRectangle *area) { GSList *item; double pos = MARGIN + 0.5; cairo_save(context); cairo_set_line_width(context, 1.0); PangoContext *ctx = gtk_widget_get_pango_context(widget); PangoLayout *layout = pango_layout_new(ctx); pango_layout_set_font_description(layout, description); for (item = labels; item; item = item->next) { gint w = render_label (context, layout, GITG_REF (item->data), pos, area->y, area->height, TRUE); pos += w + PADDING * 2 + MARGIN; } g_object_unref(layout); cairo_restore(context); }
static void update_plugin() { Reader *reader; gchar *text; u_long val, since_last; gint clock_style_id; // GkrellmKrell *k; // gint i; /* See if we recieved SNMP responses */ simpleSNMPupdate(); /* Send new SNMP requests */ for (reader = readers; reader ; reader = reader->next) { // k = KRELL(panel); // k->previous = 0; if ( (! reader->session) && (! reader->old_error) ) { reader->session = simpleSNMPopen(reader->peer, reader->port, reader->community, reader); if (! reader->session) { text = reader->old_error; reader->old_error = render_error(reader); g_free(text); } } /* Send new SNMP requests */ if ( (reader->session) && ((GK.timer_ticks % reader->delay) == 0)) simpleSNMPsend(reader->session, reader->objid, reader->objid_length); if ( (reader->session) && (reader->sample) ) { if ((reader->error) && (reader->panel != NULL)) { if (!reader->old_error || strcmp(reader->error, reader->old_error) ) { text = reader->old_error; reader->old_error = g_strdup(reader->error); g_free(text); reader->panel->textstyle = gkrellm_panel_alt_textstyle(DEFAULT_STYLE_ID); text = render_error(reader); gtk_tooltips_set_tip(reader->tooltip, reader->panel->drawing_area, text, ""); gtk_tooltips_enable(reader->tooltip); g_free(text); } } else { if ((GK.timer_ticks % reader->delay) == 0) if (reader->chart != NULL) { /* 100: turn TimeTicks into seconds */ since_last = (reader->sample_time - reader->old_sample_time) / 100; if (reader->delta) val = (reader->sample_n - reader->old_sample_n) / ( (since_last < 1) ? 1 : since_last ) / ( (reader->divisor == 0) ? 1 : reader->divisor ); else val = reader->sample_n / ( (reader->divisor == 0) ? 1 : reader->divisor ); gkrellm_store_chartdata(reader->chart, 0, val); cb_draw_chart(reader); text = render_info(reader); gtk_tooltips_set_tip(reader->tooltip, reader->chart->drawing_area, text, ""); gtk_tooltips_enable(reader->tooltip); g_free(text); reader->old_sample_n = reader->sample_n; reader->old_sample_time = reader->sample_time; } /* if there are changes update label */ if (reader->panel != NULL) { reader->panel->textstyle = gkrellm_panel_textstyle(DEFAULT_STYLE_ID); if ( !reader->old_sample || strcmp(reader->sample, reader->old_sample) || (reader->sample_n != reader->old_sample_n) ) { g_free(reader->old_sample); reader->old_sample = g_strdup(reader->sample); text = render_label(reader); gkrellm_dup_string(&reader->panel->label->string, text); g_free(text); // i = atoi(text); text = render_info(reader); gtk_tooltips_set_tip(reader->tooltip, reader->panel->drawing_area, text, ""); gtk_tooltips_enable(reader->tooltip); g_free(text); reader->old_sample_n = reader->sample_n; reader->old_sample_time = reader->sample_time; } } } } else { if (reader->panel != NULL) reader->panel->textstyle = gkrellm_panel_alt_textstyle(DEFAULT_STYLE_ID); if (reader->panel != NULL) gtk_tooltips_disable(reader->tooltip); // i = -1; } // gkrellm_update_krell(panel, k, i); clock_style_id = gkrellm_lookup_meter_style_id(CLOCK_STYLE_NAME); if (reader->panel != NULL) gkrellm_draw_panel_label( reader->panel ); //GTK2 gkrellm_bg_panel_piximage(clock_style_id) ); if (reader->panel != NULL) gkrellm_draw_panel_layers(reader->panel); } }