8 typedef struct Pix Pix;
24 void storebitmap(Rtext *t, Image *b){
30 void getimage(Rtext *t, Www *w){
40 seturl(&url, ap->image, w->url->fullname);
41 for(p=w->pix;p!=nil; p=p->next)
42 if(strcmp(ap->image, p->name)==0 && ap->width==p->width && ap->height==p->height){
47 fd=urlopen(&url, GET, 0);
50 snprint(err, sizeof(err), "[%s: %r]", url.fullname);
58 if(typ < 0 || typ >= nelem(pixcmd) || pixcmd[typ] == nil){
59 werrstr("unknown image type");
62 if((fd = pipeline(pixcmd[typ], fd)) < 0)
64 if(ap->width>0 || ap->height>0){
69 p += sprint(p, "resize");
71 p += sprint(p, " -x %d", ap->width);
73 p += sprint(p, " -y %d", ap->height);
74 if((fd = pipeline(buf, fd)) < 0)
77 b=readimage(display, fd, 1);
79 werrstr("can't read image");
83 p = emallocz(sizeof(Pix), 1);
84 strncpy(p->name, ap->image, sizeof(p->name));
94 void getpix(Rtext *t, Www *w){
95 int i, pid, nworker, worker[NXPROC];
99 for(i=0; i<nelem(worker); i++)
102 for(;t!=0;t=t->next){
105 pid = rfork(RFFDG|RFPROC|RFMEM);
108 fprint(2, "fork: %r\n");
114 for(i=0; i<nelem(worker); i++)
121 while(nworker == nelem(worker)){
122 if((pid = waitpid()) < 0)
124 for(i=0; i<nelem(worker); i++)
125 if(worker[i] == pid){
136 if((pid = waitpid()) < 0)
138 for(i=0; i<nelem(worker); i++)
139 if(worker[i] == pid){
147 void freepix(void *p)