/* Last edited on 2006-11-22 09:42:30 by stolfi */ if (o->self) { select_color(bdcolor); } { if ((cols == 0) || (rows == 0)) { pm_error("cannot self-pad an empty bitmap"); } } else { double r = (double)PPM_GETR(bdcolor)/(double)MAXV; double g = (double)PPM_GETG(bdcolor)/(double)MAXV; double b = (double)PPM_GETB(bdcolor)/(double)MAXV; switch (PNM_FORMAT_TYPE(format)) { case PPM_TYPE: { pnm_sample_t rx = (int)((double)maxval*r + 0.5); pnm_sample_t gx = (int)((double)maxval*g + 0.5); pnm_sample_t bx = (int)((double)maxval*b + 0.5); PPM_ASSIGN(bdxel, rx, gx, bx); } break; case PGM_TYPE: case PBM_TYPE: { double y = 0.299*r + 0.587*g + 0.114*b; pnm_sample_t yx = (int)((double)maxval*y + 0.5); PNM_ASSIGN1(bdxel, yx); } break; default: pm_error( "can't happen" ); } /* Prepare a row of pixels */ pnm_sample_t *bdrow = pnm_image_alloc_pixel_row(newcols, chns?); for (col = 0; col < newcols; col++) { bdrow[col] = bdxel; } }