int GImageWriteXpm(GImage *gi, char *filename) { /* Export an *.xpm image. Return 0 if all done okay */ struct _GImage *base = gi->list_len==0?gi->u.image:gi->u.images[0]; FILE *file; char stem[256]; char *pt; uint8 *scanline; int i,j; /* This routine only exports color-indexed type images */ if ( base->image_type!=it_index ) return( -1 ); /* get filename stem (255chars max) */ if ( (pt=strrchr(filename,'/'))!=NULL ) ++pt; else pt=filename; strncpy(stem,pt,sizeof(stem)); stem[255]='\0'; if ( (pt=strrchr(stem,'.'))!=NULL && pt!=stem ) *pt = '\0'; if ( (file=fopen(filename,"w"))==NULL ) { fprintf(stderr,"Can't open \"%s\"\n", filename); return( -1 ); } fprintf(file,"/* XPM */\n" ); fprintf(file,"static char *%s[] = {\n",stem); fprintf(file,"/* width height ncolors chars_per_pixel */\n"); fprintf(file,"\"%d %d %d %d\"\n", (int) base->width, (int) base->height, base->clut->clut_len, base->clut->clut_len>95?2:1 ); fprintf(file,"/* colors */\n"); for ( i=0; i<base->clut->clut_len; ++i ) fprintf(file,"\"%s c #%06x\"\n", pixname(i,base->clut->clut_len), (int) base->clut->clut[i]); fprintf(file,"/* image */\n"); for ( i=0; i<base->height; ++i ) { fprintf(file,"\"" ); scanline = base->data + i*base->bytes_per_line; for ( j=0; j<base->width; ++j ) fprintf(file,"%s", pixname(*scanline++,base->clut->clut_len)); fprintf(file,"\"%s\n", i==base->height-1?"":"," ); } fprintf(file,"};\n" ); fflush(file); i=ferror(file); fclose(file); return( i ); }
int GImageWriteXpm(GImage *gi, char *filename) { struct _GImage *base = gi->list_len==0?gi->u.image:gi->u.images[0]; FILE *file; char stem[256]; char *pt; uint8 *scanline; int i,j; if ( base->image_type!=it_index ) return(false ); if (( pt = strrchr(filename,'/'))==NULL ) strcpy(stem,filename); else strcpy(stem,pt+1); if ( (pt = strchr(stem,'.'))!=NULL ) *pt = '\0'; if ((file=fopen(filename,"w"))==NULL ) return(false); fprintf(file,"/* XPM */\n" ); fprintf(file,"static char *%s[] =\n", stem ); fprintf(file,"{\n"); fprintf(file,"/* width height ncolors chars_per_pixel */\n"); fprintf(file,"\"%d %d %d %d\"\n", (int) base->width, (int) base->height, base->clut->clut_len, base->clut->clut_len>95?2:1 ); fprintf(file,"/* colors */\n"); for ( i=0; i<base->clut->clut_len; ++i ) fprintf(file,"\"%s c #%06x\"\n", pixname(i,base->clut->clut_len), (int) base->clut->clut[i]); fprintf(file,"/* image */\n"); for ( i=0; i<base->height; ++i ) { fprintf(file,"\"" ); scanline = base->data + i*base->bytes_per_line; for ( j=0; j<base->width; ++j ) fprintf(file,"%s", pixname(*scanline++,base->clut->clut_len)); fprintf(file,"\"%s\n", i==base->height-1?"":"," ); } fprintf(file,"};\n" ); fflush(file); i = ferror(file); fclose(file); return( i ); }
void KMJobViewer::updateCaption() { if (!m_standalone) return; QString pixname("fileprint"); if (!m_prname.isEmpty()) { setCaption(i18n("Print Jobs for %1").arg(m_prname)); KMPrinter *prt = KMManager::self()->findPrinter(m_prname); if (prt) pixname = prt->pixmap(); } else { setCaption(i18n("No Printer")); } KWin::setIcons(winId(), DesktopIcon(pixname), SmallIcon(pixname)); }