mirror of
https://github.com/godotengine/godot.git
synced 2026-04-28 22:22:03 +00:00
This method is used to generate headers for embedding files into the binary (think about the new `#embed` feature in C23 and C++26). While the stringification step itself was plenty fast, it then proceeded to wrap everything using the `textwrap` module. `textwrap` is *very* slow, as it's apparently optimized for human text. This patch reimplements the wrapping logic using a simple regex, resulting in a tremendous speed improvement (~6x), and switches to `map` for the stringification itself (thanks Rémi!) It also removes a (practically) unused argument, `initial_indent`. The generated files are pretty much the same, with a tiny difference in line length (for some reason the old logic overshot the requested line length)
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
"""Functions used to generate source files during build time"""
|
|
|
|
import methods
|
|
|
|
|
|
def make_splash(target, source, env):
|
|
buffer = methods.get_buffer(str(source[0]))
|
|
|
|
with methods.generated_wrapper(str(target[0])) as file:
|
|
# Use a neutral gray color to better fit various kinds of projects.
|
|
file.write(f"""\
|
|
#include "core/math/color.h"
|
|
|
|
static const Color boot_splash_bg_color = Color(0.14, 0.14, 0.14);
|
|
inline constexpr const unsigned char boot_splash_png[] = {{
|
|
{methods.format_buffer(buffer, 1)}
|
|
}};
|
|
""")
|
|
|
|
|
|
def make_splash_editor(target, source, env):
|
|
buffer = methods.get_buffer(str(source[0]))
|
|
|
|
with methods.generated_wrapper(str(target[0])) as file:
|
|
# The editor splash background color is taken from the default editor theme's background color.
|
|
# This helps achieve a visually "smoother" transition between the splash screen and the editor.
|
|
file.write(f"""\
|
|
#include "core/math/color.h"
|
|
|
|
static const Color boot_splash_editor_bg_color = Color(0.125, 0.145, 0.192);
|
|
inline constexpr const unsigned char boot_splash_editor_png[] = {{
|
|
{methods.format_buffer(buffer, 1)}
|
|
}};
|
|
""")
|
|
|
|
|
|
def make_app_icon(target, source, env):
|
|
buffer = methods.get_buffer(str(source[0]))
|
|
|
|
with methods.generated_wrapper(str(target[0])) as file:
|
|
# Use a neutral gray color to better fit various kinds of projects.
|
|
file.write(f"""\
|
|
inline constexpr const unsigned char app_icon_png[] = {{
|
|
{methods.format_buffer(buffer, 1)}
|
|
}};
|
|
""")
|