Speed up splash image generation

This commit is contained in:
Joshua Granick
2014-11-11 11:17:09 -08:00
parent 1f24e162ec
commit 8c065e576a
2 changed files with 33 additions and 15 deletions

View File

@@ -227,25 +227,38 @@ class ImageDataUtil {
var g = (color & 0x0000FF00) >>> 8;
var b = (color & 0x000000FF);
var rgba = (r | (g << 8) | (b << 16) | (a << 24));
var data = image.buffer.data;
var stride = image.buffer.width * 4;
var offset:Int;
var rowStart = Std.int (rect.y + image.offsetY);
var rowEnd = Std.int (rect.bottom + image.offsetY);
var columnStart = Std.int (rect.x + image.offsetX);
var columnEnd = Std.int (rect.right + image.offsetX);
for (row in rowStart...rowEnd) {
if (rect.width == image.buffer.width && rect.height == image.buffer.height && rect.x == 0 && rect.y == 0 && image.offsetX == 0 && image.offsetY == 0) {
for (column in columnStart...columnEnd) {
var length = image.buffer.width * image.buffer.height;
for (i in 0...length) {
offset = (row * stride) + (column * 4);
data.setUInt32 (i * 4, rgba);
data[offset] = r;
data[offset + 1] = g;
data[offset + 2] = b;
data[offset + 3] = a;
}
} else {
var stride = image.buffer.width * 4;
var offset:Int;
var rowStart = Std.int (rect.y + image.offsetY);
var rowEnd = Std.int (rect.bottom + image.offsetY);
var columnStart = Std.int (rect.x + image.offsetX);
var columnEnd = Std.int (rect.right + image.offsetX);
for (row in rowStart...rowEnd) {
for (column in columnStart...columnEnd) {
offset = (row * stride) + (column * 4);
data.setUInt32 (offset, rgba);
}
}

View File

@@ -10,6 +10,7 @@ import helpers.CPPHelper;
import helpers.FileHelper;
import helpers.IconHelper;
import helpers.IOSHelper;
import helpers.LogHelper;
import helpers.PathHelper;
import helpers.PlatformHelper;
import helpers.ProcessHelper;
@@ -399,8 +400,12 @@ class IOSPlatform extends PlatformTarget {
if (!match) {
LogHelper.info ("", " - \x1b[1mGenerating image:\x1b[0m " + PathHelper.combine (projectDirectory, splashScreenNames[i]));
var image = new Image (null, 0, 0, width, height, (0xFF << 24) | (project.window.background & 0xFFFFFF));
File.saveBytes (PathHelper.combine (projectDirectory, splashScreenNames[i]), image.encode ("png"));
var bytes = image.encode ("png");
File.saveBytes (PathHelper.combine (projectDirectory, splashScreenNames[i]), bytes);
}