static Mask *ase_file_read_mask_chunk(FILE *f) { int c, u, v, byte; Mask *mask; // Read chunk data int x = fgetw(f); int y = fgetw(f); int w = fgetw(f); int h = fgetw(f); ase_file_read_padding(f, 8); std::string name = ase_file_read_string(f); mask = new Mask(); mask->setName(name.c_str()); mask->replace(x, y, w, h); // Read image data for (v=0; v<h; v++) for (u=0; u<(w+7)/8; u++) { byte = fgetc(f); for (c=0; c<8; c++) image_putpixel(mask->getBitmap(), u*8+c, v, byte & (1<<(7-c))); } return mask; }