ImageBitmapFactories& ImageBitmapFactories::from(EventTarget& eventTarget) { if (LocalDOMWindow* window = eventTarget.toDOMWindow()) return fromInternal(*window); ASSERT(eventTarget.executionContext()->isWorkerGlobalScope()); return ImageBitmapFactories::fromInternal(*toWorkerGlobalScope(eventTarget.executionContext())); }
void Image::getPixel(int x, int y, int *red, int *green, int *blue) { if(x >= 0 && x < m_width && y >= 0 && y < m_height) fromInternal(m_data[x][y], red, green, blue); else { *red = -1; *green = -1; *blue = -1; } }
bool Image::save(string filename) { // Check filename and append .ppm if(!endsWith(filename, ".ppm")) filename += ".ppm"; // Open and write to file ofstream file; file.exceptions(ofstream::failbit | ofstream::badbit); try { file.open(filename.c_str(), ofstream::binary | ofstream::trunc); // Write the header string tmp = "P6\n"; // Magic number tmp += intToString(m_width) + " " + intToString(m_height) + "\n"; // Size //tmp += "15\n"; // Max color tmp += "255\n"; // Max color file.write(tmp.c_str(), tmp.length()); // Write data for(int y = 0; y < m_height; y++) { for(int x = 0; x < m_width; x++) { int red, green, blue; fromInternal(m_data[x][y], &red, &green, &blue); char color[3] = {(char) red, (char) green, (char) blue}; file.write((char*) color, 3); } } } catch(ofstream::failure e) { m_last_error = "Can't open or write to file " + filename; return true; } file.close(); return false; }