ImageBitmapFactories& ImageBitmapFactories::from(EventTarget& eventTarget)
{
    if (LocalDOMWindow* window = eventTarget.toDOMWindow())
        return fromInternal(*window);

    ASSERT(eventTarget.executionContext()->isWorkerGlobalScope());
    return ImageBitmapFactories::fromInternal(*toWorkerGlobalScope(eventTarget.executionContext()));
}
Beispiel #2
0
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;
	}
}
Beispiel #3
0
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;
}