int fd, xsize, ysize;
Memimage *im, *nim;
ulong ochan, tchan;
- char buf[12];
xsize = ysize = 0;
ARGBEGIN{
ochan = im->chan;
switch(ochan){
default:
- sysfatal("can't handle channel type %s", chantostr(buf, ochan));
+ for(tchan = ochan; tchan; tchan >>= 8)
+ if(TYPE(tchan) == CAlpha){
+ tchan = RGBA32;
+ break;
+ }
+ if(tchan == 0)
+ tchan = RGB24;
+ break;
case GREY8:
case RGB24:
case RGBA32:
case XRGB32:
tchan = ochan;
break;
- case CMAP8:
- case RGB16:
- case RGB15:
- tchan = RGB24;
- break;
case GREY1:
case GREY2:
case GREY4:
freememimage(im);
im = nim;
}
- if((nim = allocmemimage(Rect(im->r.min.x, im->r.min.y, xsize, ysize), tchan)) == nil)
+ if((nim = allocmemimage(
+ Rect(im->r.min.x, im->r.min.y, im->r.min.x+xsize, im->r.min.y+ysize),
+ tchan)) == nil)
sysfatal("addocmemimage: %r");
resample(nim, nim->r, im, im->r);
freememimage(im);