bool XFace::CreateFromXFace(const char *xfacedata) { #ifndef HAVE_COMPFACE_H return false; #else if(data) delete [] data; if(xface) delete [] xface; initialised = false; xface = new char [2500]; strncpy(xface, xfacedata, 2500); data = new char [5000]; strncpy(data, xface, 5000); if(uncompface(data) < 0) { delete [] data; delete [] xface; data = xface = NULL; return false; } String out = strutil_enforceCRLF(wxString::FromAscii(xface)); delete [] xface; xface = strutil_strdup(out.ToAscii()); initialised = true; return true; #endif }
static void headerview_show_xface(HeaderView *headerview, MsgInfo *msginfo) { gchar xface[2048]; GdkPixmap *pixmap; GdkBitmap *mask; GtkWidget *hbox = headerview->hbox; if (!msginfo->xface || strlen(msginfo->xface) < 5) { if (headerview->image && GTK_WIDGET_VISIBLE(headerview->image)) { gtk_widget_hide(headerview->image); gtk_widget_queue_resize(hbox); } return; } if (!GTK_WIDGET_VISIBLE(headerview->hbox)) return; strncpy(xface, msginfo->xface, sizeof(xface)); if (uncompface(xface) < 0) { g_warning("uncompface failed\n"); if (headerview->image) gtk_widget_hide(headerview->image); return; } create_xpm_from_xface(xpm_xface, xface); pixmap = gdk_pixmap_create_from_xpm_d (hbox->window, &mask, &hbox->style->white, xpm_xface); if (!headerview->image) { GtkWidget *image; image = gtk_image_new_from_pixmap(pixmap, mask); gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); gtk_widget_show(image); headerview->image = image; } else { gtk_image_set_from_pixmap(GTK_IMAGE(headerview->image), pixmap, mask); gtk_widget_show(headerview->image); } gdk_pixmap_unref(pixmap); }