Example #1
0
void macIcon(iw_context* context, const char* filename) {
	//16x16
	//32x32
	//128x128
	//256x256
	//512x512
	//1024x1024

	ByteStream stream;

	iw_iodescr writedescr;
	memset(&writedescr, 0, sizeof(struct iw_iodescr));
	writedescr.write_fn = stream_writefn;
	writedescr.seek_fn = stream_seekfn;
	writedescr.fp = &stream;

	stream.put('i'); stream.put('c'); stream.put('n'); stream.put('s');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');

	stream.put('i'); stream.put('c'); stream.put('0'); stream.put('8');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
	scale(context, 256, 256);
	iw_write_file_by_fmt(context, &writedescr, IW_FORMAT_PNG);

	int icon08size = static_cast<int>(stream.size() - 8);
	stream.put('i'); stream.put('c'); stream.put('0'); stream.put('9');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
	scale(context, 512, 512);
	iw_write_file_by_fmt(context, &writedescr, IW_FORMAT_PNG);

	int icon09size = static_cast<int>(stream.size() - icon08size - 8);
	stream.put('i'); stream.put('c'); stream.put('1'); stream.put('0');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
	scale(context, 1024, 1024);
	iw_write_file_by_fmt(context, &writedescr, IW_FORMAT_PNG);

	int icon10size = static_cast<int>(stream.size() - icon09size - icon08size - 8);

	std::vector<byte> size = convertIntToByteArray(static_cast<int>(stream.size()));
	for (int i = 0; i < 4; ++i) stream.set( 4 + i, size[i]);

	size = convertIntToByteArray(icon08size);
	for (int i = 0; i < 4; ++i) stream.set(12 + i, size[i]);

	size = convertIntToByteArray(icon09size);
	for (int i = 0; i < 4; ++i) stream.set(icon08size + 8 + 4 + i, size[i]);

	size = convertIntToByteArray(icon10size);
	for (int i = 0; i < 4; ++i) stream.set(icon08size + icon09size + 8 + 4 + i, size[i]);

	stream.save(filename);
}
Example #2
0
void Ball::exportToWindowsIcon(Path filename, Path directory) {
	//16x16
	//32x32
	//48x48
	//256x256

	ByteStream stream;
	writeIcoHeader(stream);

	writeIconDirEntry(stream, 16, 16, iconHeaderSize + iconDirEntrySize * 4);
	writeIconDirEntry(stream, 32, 32, iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16));
	writeIconDirEntry(stream, 48, 48, iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16) + getBMPSize(32, 32));
	writeIconDirEntry(stream, 256, 256, iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16) + getBMPSize(32, 32) + getBMPSize(48, 48));

	writeBMP(stream, scale(16, 16, transparent, directory));
	writeBMP(stream, scale(32, 32, transparent, directory));
	writeBMP(stream, scale(48, 48, transparent, directory));

	scale(256, 256, transparent, directory)->save(stream);
			
	std::vector<byte> pngSize = convertIntToByteArrayLE(static_cast<int>(stream.size()) - (iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16) + getBMPSize(32, 32) + getBMPSize(48, 48)));
	for (int i = 0; i < 4; ++i) stream.set(i + iconHeaderSize + iconDirEntrySize * 3 + 8, pngSize[i]);
	
	stream.save(filename);
}
Example #3
0
void Ball::exportToMacIcon(Path filename, Path directory) {
	//16x16
	//32x32
	//128x128
	//256x256
	//512x512
	//1024x1024

	ByteStream stream;
	stream.put('i'); stream.put('c'); stream.put('n'); stream.put('s');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
			
	stream.put('i'); stream.put('c'); stream.put('0'); stream.put('8');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
	scale(256, 256, transparent, directory)->save(stream);
	int icon08size = static_cast<int>(stream.size() - 8);
	stream.put('i'); stream.put('c'); stream.put('0'); stream.put('9');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
	scale(512, 512, transparent, directory)->save(stream);
	int icon09size = static_cast<int>(stream.size() - icon08size - 8);
	stream.put('i'); stream.put('c'); stream.put('1'); stream.put('0');
	stream.put('-'); stream.put('-'); stream.put('-'); stream.put('-');
	scale(1024, 1024, transparent, directory)->save(stream);
	int icon10size = static_cast<int>(stream.size() - icon09size - icon08size - 8);
	
	std::vector<byte> size = convertIntToByteArray(static_cast<int>(stream.size()));
	for (int i = 0; i < 4; ++i) stream.set( 4 + i, size[i]);
	
	size = convertIntToByteArray(icon08size);
	for (int i = 0; i < 4; ++i) stream.set(12 + i, size[i]);
	
	size = convertIntToByteArray(icon09size);
	for (int i = 0; i < 4; ++i) stream.set(icon08size + 8 + 4 + i, size[i]);
	
	size = convertIntToByteArray(icon10size);
	for (int i = 0; i < 4; ++i) stream.set(icon08size + icon09size + 8 + 4 + i, size[i]);
	
	stream.save(filename);
}
Example #4
0
void windowsIcon(iw_context* context, const char* filename) {
	//16x16
	//32x32
	//48x48
	//256x256

	ByteStream stream;
	writeIcoHeader(stream);

	writeIconDirEntry(stream, 16, 16, iconHeaderSize + iconDirEntrySize * 4);
	writeIconDirEntry(stream, 32, 32, iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16));
	writeIconDirEntry(stream, 48, 48, iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16) + getBMPSize(32, 32));
	writeIconDirEntry(stream, 256, 256, iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16) + getBMPSize(32, 32) + getBMPSize(48, 48));

	scale(context, 16, 16);
	iw_image img;
	iw_get_output_image(context, &img);
	writeBMP(stream, &img);

	scale(context, 32, 32);
	iw_get_output_image(context, &img);
	writeBMP(stream, &img);

	scale(context, 48, 48);
	iw_get_output_image(context, &img);
	writeBMP(stream, &img);

	scale(context, 256, 256);
	iw_get_output_image(context, &img);
	iw_iodescr writedescr;
	memset(&writedescr, 0, sizeof(struct iw_iodescr));
	writedescr.write_fn = stream_writefn;
	writedescr.seek_fn = stream_seekfn;
	writedescr.fp = &stream;
	iw_write_file_by_fmt(context, &writedescr, IW_FORMAT_PNG);

	std::vector<byte> pngSize = convertIntToByteArrayLE(static_cast<int>(stream.size()) - (iconHeaderSize + iconDirEntrySize * 4 + getBMPSize(16, 16) + getBMPSize(32, 32) + getBMPSize(48, 48)));
	for (int i = 0; i < 4; ++i) stream.set(i + iconHeaderSize + iconDirEntrySize * 3 + 8, pngSize[i]);

	stream.save(filename);
}