void zwm_decor_init(void) { int i; XGlyphInfo info; cmap = DefaultColormap(dpy, scr); gc = XCreateGC(dpy, root, 0, NULL); memset(icons,0,64); xfont = XftFontOpenName (dpy, scr, "DejaVu Sans-9:bold"); if(!xfont)xfont = XftFontOpenXlfd(dpy, scr, config.font); ifont = XftFontOpenName (dpy, scr, "DejaVu Sans-16:bold"); if(!ifont)ifont = XftFontOpenXlfd(dpy, scr, config.icons); XftColorAllocValue(dpy, DefaultVisual(dpy, scr), cmap, &xcolor.color, &xcolor); config.xcolor_nborder = alloc_color(config.normal_border_color); config.xcolor_fborder = alloc_color(config.focus_border_color); config.xcolor_nbg = alloc_color(config.normal_bg_color); config.xcolor_fbg = alloc_color(config.focus_bg_color); config.xcolor_flbg = alloc_color(config.float_bg_color); config.xcolor_nshadow = alloc_color(config.normal_shadow_color); config.xcolor_fshadow = alloc_color(config.focus_shadow_color); config.xcolor_ntitle = alloc_color(config.normal_title_color); config.xcolor_ftitle = alloc_color(config.focus_title_color); config.xcolor_root = alloc_color(config.root_bg_color); get_status(icons, 64); XftTextExtentsUtf8(dpy, xfont, (FcChar8*)" [000] ", 7, &info); char_width = info.width; XftTextExtentsUtf8(dpy, xfont, (FcChar8*)icons, strlen(icons), &info); date_width = info.width; icons[0] = 0; for(i=0; i<32 && config.buttons[i].func; i++){ strcat(icons, config.buttons[i].c); config.button_count = i+1; } if(config.button_count){ XftTextExtentsUtf8(dpy, ifont, (FcChar8*)icons, strlen(icons), &info); config.button_width = info.width / config.button_count; config.icon_y = info.height + (config.title_height - info.height)/2 + 1; } config.title_y = config.title_height - xfont->descent - 2; }
int ColorModel::alloc_grays() { #define DELTA (256 / 32) int pixel[32]; int i; for (i = 0; i < 32; ++i) { int luma = (i + 1) * DELTA - 1; color c; c.r = c.g = c.b = luma; pixel[i] = alloc_color(c); if (pixel[i] < 0) return (-1); } for (i = 0; i < 256; ++i) { int level = (i + 1) / DELTA; int err; if (level == 0) err = 0; else { level -= 1; err = (i + 1) & (DELTA - 1); } grey_lut_[i] = pixel[level] | err << 8; } for (; i < 512; ++i) grey_lut_[i] = pixel[31]; return (0); }
static void init_display_window(void) { scope_disp_t *disp; int i; disp = &(ctrl_usr->disp); /* allocate a drawing area */ disp->drawing = gtk_drawing_area_new(); /* put it into the display window */ gtk_box_pack_start(GTK_BOX(ctrl_usr->waveform_win), disp->drawing, TRUE, TRUE, 0); /* hook up a function to handle expose events */ gtk_signal_connect(GTK_OBJECT(disp->drawing), "expose_event", GTK_SIGNAL_FUNC(handle_window_expose), NULL); gtk_signal_connect(GTK_OBJECT(disp->drawing), "button_release_event", GTK_SIGNAL_FUNC(handle_release), NULL); gtk_signal_connect(GTK_OBJECT(disp->drawing), "button_press_event", GTK_SIGNAL_FUNC(handle_click), NULL); gtk_signal_connect(GTK_OBJECT(disp->drawing), "motion_notify_event", GTK_SIGNAL_FUNC(handle_motion), NULL); gtk_signal_connect(GTK_OBJECT(disp->drawing), "scroll_event", GTK_SIGNAL_FUNC(handle_scroll), NULL); gtk_widget_add_events(GTK_WIDGET(disp->drawing), GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_SCROLL_MASK ); gtk_widget_show(disp->drawing); /* get color map */ disp->map = gtk_widget_get_colormap(disp->drawing); /* allocate colors */ alloc_color(&(disp->color_bg), disp->map, 0, 0, 0); alloc_color(&(disp->color_grid), disp->map, 255, 255, 255); alloc_color(&disp->color_baseline, disp->map, 128, 128, 128); for(i = 0; i<16; i++) { alloc_color(&(disp->color_normal[i]), disp->map, normal_colors[i][0], normal_colors[i][1], normal_colors[i][2]); alloc_color(&(disp->color_selected[i]), disp->map, selected_colors[i][0], selected_colors[i][1], selected_colors[i][2]); } }