You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 19:41:11 +00:00
Merge pull request #63871 from bruvzg/ts_build_options
Add Text Server related options to the build profiles editor.
This commit is contained in:
@@ -46,19 +46,68 @@ const char *EditorBuildProfile::build_option_identifiers[BUILD_OPTION_MAX] = {
|
||||
"disable_3d_physics",
|
||||
"disable_navigation",
|
||||
"openxr",
|
||||
"rendering_device", // FIXME: there's no scons option to disable rendering device
|
||||
"opengl3",
|
||||
"vulkan",
|
||||
"module_text_server_fb_enabled",
|
||||
"module_text_server_adv_enabled",
|
||||
"module_freetype_enabled",
|
||||
"brotli",
|
||||
"graphite",
|
||||
"module_msdfgen_enabled"
|
||||
};
|
||||
|
||||
const bool EditorBuildProfile::build_option_disabled_by_default[BUILD_OPTION_MAX] = {
|
||||
// This maps to SCons build options.
|
||||
false, // 3D
|
||||
false, // PHYSICS_2D
|
||||
false, // PHYSICS_3D
|
||||
false, // NAVIGATION
|
||||
false, // XR
|
||||
false, // RENDERING_DEVICE
|
||||
false, // OPENGL
|
||||
false, // VULKAN
|
||||
true, // TEXT_SERVER_FALLBACK
|
||||
false, // TEXT_SERVER_COMPLEX
|
||||
false, // DYNAMIC_FONTS
|
||||
false, // WOFF2_FONTS
|
||||
false, // GRPAHITE_FONTS
|
||||
false, // MSDFGEN
|
||||
};
|
||||
|
||||
const bool EditorBuildProfile::build_option_disable_values[BUILD_OPTION_MAX] = {
|
||||
// This maps to SCons build options.
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
true, // 3D
|
||||
true, // PHYSICS_2D
|
||||
true, // PHYSICS_3D
|
||||
true, // NAVIGATION
|
||||
false, // XR
|
||||
false, // RENDERING_DEVICE
|
||||
false, // OPENGL
|
||||
false, // VULKAN
|
||||
false, // TEXT_SERVER_FALLBACK
|
||||
false, // TEXT_SERVER_COMPLEX
|
||||
false, // DYNAMIC_FONTS
|
||||
false, // WOFF2_FONTS
|
||||
false, // GRPAHITE_FONTS
|
||||
false, // MSDFGEN
|
||||
};
|
||||
|
||||
const EditorBuildProfile::BuildOptionCategory EditorBuildProfile::build_option_category[BUILD_OPTION_MAX] = {
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // 3D
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // PHYSICS_2D
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // PHYSICS_3D
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // NAVIGATION
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // XR
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // RENDERING_DEVICE
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // OPENGL
|
||||
BUILD_OPTION_CATEGORY_GENERAL, // VULKAN
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER, // TEXT_SERVER_FALLBACK
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER, // TEXT_SERVER_COMPLEX
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER, // DYNAMIC_FONTS
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER, // WOFF2_FONTS
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER, // GRPAHITE_FONTS
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER, // MSDFGEN
|
||||
};
|
||||
|
||||
void EditorBuildProfile::set_disable_class(const StringName &p_class, bool p_disabled) {
|
||||
@@ -127,6 +176,12 @@ String EditorBuildProfile::get_build_option_name(BuildOption p_build_option) {
|
||||
TTRC("RenderingDevice"),
|
||||
TTRC("OpenGL"),
|
||||
TTRC("Vulkan"),
|
||||
TTRC("Text Server: Fallback"),
|
||||
TTRC("Text Server: Advanced"),
|
||||
TTRC("TTF, OTF, Type 1, WOFF1 Fonts"),
|
||||
TTRC("WOFF2 Fonts"),
|
||||
TTRC("SIL Graphite Fonts"),
|
||||
TTRC("Multi-channel Signed Distance Field Font Rendering"),
|
||||
};
|
||||
return TTRGET(build_option_names[p_build_option]);
|
||||
}
|
||||
@@ -143,11 +198,33 @@ String EditorBuildProfile::get_build_option_description(BuildOption p_build_opti
|
||||
TTRC("RenderingDevice based rendering (if disabled, the OpenGL back-end is required)."),
|
||||
TTRC("OpenGL back-end (if disabled, the RenderingDevice back-end is required)."),
|
||||
TTRC("Vulkan back-end of RenderingDevice."),
|
||||
TTRC("Fallback implementation of Text Server\nSupports basic text layouts."),
|
||||
TTRC("Text Server implementation powered by ICU and HarfBuzz libraries.\nSupports complex text layouts, BiDi, and contextual OpenType font features."),
|
||||
TTRC("TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType library (if disabled, WOFF2 support is also disabled)."),
|
||||
TTRC("WOFF2 font format support using FreeType and Brotli libraries."),
|
||||
TTRC("SIL Graphite smart font technology support (supported by Advanced Text Server only)."),
|
||||
TTRC("Multi-channel signed distance field font rendering support using msdfgen library (pre-rendered MSDF fonts can be used even if this option disabled)."),
|
||||
};
|
||||
|
||||
return TTRGET(build_option_descriptions[p_build_option]);
|
||||
}
|
||||
|
||||
EditorBuildProfile::BuildOptionCategory EditorBuildProfile::get_build_option_category(BuildOption p_build_option) {
|
||||
ERR_FAIL_INDEX_V(p_build_option, BUILD_OPTION_MAX, BUILD_OPTION_CATEGORY_GENERAL);
|
||||
return build_option_category[p_build_option];
|
||||
}
|
||||
|
||||
String EditorBuildProfile::get_build_option_category_name(BuildOptionCategory p_build_option_category) {
|
||||
ERR_FAIL_INDEX_V(p_build_option_category, BUILD_OPTION_CATEGORY_MAX, String());
|
||||
|
||||
const char *build_option_subcategories[BUILD_OPTION_CATEGORY_MAX]{
|
||||
TTRC("General Features:"),
|
||||
TTRC("Text Rendering and Font Options:"),
|
||||
};
|
||||
|
||||
return TTRGET(build_option_subcategories[p_build_option_category]);
|
||||
}
|
||||
|
||||
Error EditorBuildProfile::save_to_file(const String &p_path) {
|
||||
Dictionary data;
|
||||
data["type"] = "build_profile";
|
||||
@@ -160,8 +237,12 @@ Error EditorBuildProfile::save_to_file(const String &p_path) {
|
||||
|
||||
Dictionary dis_build_options;
|
||||
for (int i = 0; i < BUILD_OPTION_MAX; i++) {
|
||||
if (build_options_disabled[i]) {
|
||||
dis_build_options[build_option_identifiers[i]] = build_option_disable_values[i];
|
||||
if (build_options_disabled[i] != build_option_disabled_by_default[i]) {
|
||||
if (build_options_disabled[i]) {
|
||||
dis_build_options[build_option_identifiers[i]] = build_option_disable_values[i];
|
||||
} else {
|
||||
dis_build_options[build_option_identifiers[i]] = !build_option_disable_values[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +292,7 @@ Error EditorBuildProfile::load_from_file(const String &p_path) {
|
||||
}
|
||||
|
||||
for (int i = 0; i < BUILD_OPTION_MAX; i++) {
|
||||
build_options_disabled[i] = false;
|
||||
build_options_disabled[i] = build_option_disabled_by_default[i];
|
||||
}
|
||||
|
||||
if (data.has("disabled_build_options")) {
|
||||
@@ -259,10 +340,24 @@ void EditorBuildProfile::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_RENDERING_DEVICE);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_OPENGL);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_VULKAN);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_TEXT_SERVER_FALLBACK);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_TEXT_SERVER_ADVANCED);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_DYNAMIC_FONTS);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_WOFF2_FONTS);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_GRPAHITE_FONTS);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_MSDFGEN);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_CATEGORY_GENERAL);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_CATEGORY_TEXT_SERVER);
|
||||
BIND_ENUM_CONSTANT(BUILD_OPTION_CATEGORY_MAX);
|
||||
}
|
||||
|
||||
EditorBuildProfile::EditorBuildProfile() {}
|
||||
EditorBuildProfile::EditorBuildProfile() {
|
||||
for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_MAX; i++) {
|
||||
build_options_disabled[i] = build_option_disabled_by_default[i];
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
|
||||
@@ -633,11 +728,18 @@ void EditorBuildProfileManager::_update_edited_profile() {
|
||||
|
||||
TreeItem *root = class_list->create_item();
|
||||
|
||||
TreeItem *build_options = class_list->create_item(root);
|
||||
build_options->set_text(0, TTR("General Features:"));
|
||||
HashMap<EditorBuildProfile::BuildOptionCategory, TreeItem *> subcats;
|
||||
for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_CATEGORY_MAX; i++) {
|
||||
TreeItem *build_cat;
|
||||
build_cat = class_list->create_item(root);
|
||||
|
||||
build_cat->set_text(0, EditorBuildProfile::get_build_option_category_name(EditorBuildProfile::BuildOptionCategory(i)));
|
||||
subcats[EditorBuildProfile::BuildOptionCategory(i)] = build_cat;
|
||||
}
|
||||
|
||||
for (int i = 0; i < EditorBuildProfile::BUILD_OPTION_MAX; i++) {
|
||||
TreeItem *build_option;
|
||||
build_option = class_list->create_item(build_options);
|
||||
build_option = class_list->create_item(subcats[EditorBuildProfile::get_build_option_category(EditorBuildProfile::BuildOption(i))]);
|
||||
|
||||
build_option->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
|
||||
build_option->set_text(0, EditorBuildProfile::get_build_option_name(EditorBuildProfile::BuildOption(i)));
|
||||
|
||||
@@ -53,7 +53,19 @@ public:
|
||||
BUILD_OPTION_RENDERING_DEVICE,
|
||||
BUILD_OPTION_OPENGL,
|
||||
BUILD_OPTION_VULKAN,
|
||||
BUILD_OPTION_MAX
|
||||
BUILD_OPTION_TEXT_SERVER_FALLBACK,
|
||||
BUILD_OPTION_TEXT_SERVER_ADVANCED,
|
||||
BUILD_OPTION_DYNAMIC_FONTS,
|
||||
BUILD_OPTION_WOFF2_FONTS,
|
||||
BUILD_OPTION_GRPAHITE_FONTS,
|
||||
BUILD_OPTION_MSDFGEN,
|
||||
BUILD_OPTION_MAX,
|
||||
};
|
||||
|
||||
enum BuildOptionCategory {
|
||||
BUILD_OPTION_CATEGORY_GENERAL,
|
||||
BUILD_OPTION_CATEGORY_TEXT_SERVER,
|
||||
BUILD_OPTION_CATEGORY_MAX,
|
||||
};
|
||||
|
||||
private:
|
||||
@@ -65,7 +77,9 @@ private:
|
||||
|
||||
bool build_options_disabled[BUILD_OPTION_MAX] = {};
|
||||
static const char *build_option_identifiers[BUILD_OPTION_MAX];
|
||||
static const bool build_option_disabled_by_default[BUILD_OPTION_MAX];
|
||||
static const bool build_option_disable_values[BUILD_OPTION_MAX];
|
||||
static const BuildOptionCategory build_option_category[BUILD_OPTION_MAX];
|
||||
|
||||
String _get_build_option_name(BuildOption p_build_option) { return get_build_option_name(p_build_option); }
|
||||
|
||||
@@ -93,11 +107,15 @@ public:
|
||||
static String get_build_option_name(BuildOption p_build_option);
|
||||
static String get_build_option_description(BuildOption p_build_option);
|
||||
static bool get_build_option_disable_value(BuildOption p_build_option);
|
||||
static BuildOptionCategory get_build_option_category(BuildOption p_build_option);
|
||||
|
||||
static String get_build_option_category_name(BuildOptionCategory p_build_option_category);
|
||||
|
||||
EditorBuildProfile();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(EditorBuildProfile::BuildOption)
|
||||
VARIANT_ENUM_CAST(EditorBuildProfile::BuildOptionCategory)
|
||||
|
||||
class EditorFileSystemDirectory;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user