nuclear@0: #include nuclear@0: #include nuclear@0: #include nuclear@0: #include "image.h" nuclear@0: #include "material.h" nuclear@0: #include nuclear@0: nuclear@0: Image::Image() nuclear@0: { nuclear@0: pixels = 0; nuclear@0: xsz = ysz = 0; nuclear@0: } nuclear@0: nuclear@0: Image::Image(int xsz, int ysz) nuclear@0: { nuclear@0: pixels = 0; nuclear@0: set_pixels(xsz, ysz, 0); nuclear@0: } nuclear@0: nuclear@0: Image::~Image() nuclear@0: { nuclear@0: delete [] pixels; nuclear@0: } nuclear@0: nuclear@0: void Image::set_pixels(int xsz, int ysz, const Color *pix) nuclear@0: { nuclear@0: delete [] pixels; nuclear@0: nuclear@0: pixels = new Color[xsz * ysz]; nuclear@0: this->xsz = xsz; nuclear@0: this->ysz = ysz; nuclear@0: nuclear@0: if(pix) { nuclear@0: memcpy(pixels, pix, xsz * ysz * sizeof *pixels); nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: bool Image::load(const char *fname) nuclear@0: { nuclear@0: int xsz, ysz; nuclear@0: Color *img = (Color*)img_load_pixels(fname, &xsz, &ysz, IMG_FMT_RGBF); nuclear@0: if(!img) { nuclear@0: return false; nuclear@0: } nuclear@0: nuclear@0: /* convert the pixels to linear color space */ nuclear@0: for(int i=0; i