Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/function/nodes/node_fn_slice_string.cc
| Show All 16 Lines | |||||
| #include "BLI_string_utf8.h" | #include "BLI_string_utf8.h" | ||||
| #include "node_function_util.hh" | #include "node_function_util.hh" | ||||
| namespace blender::nodes { | namespace blender::nodes { | ||||
| static void fn_node_slice_string_declare(NodeDeclarationBuilder &b) | static void fn_node_slice_string_declare(NodeDeclarationBuilder &b) | ||||
| { | { | ||||
| b.add_input<decl::String>("String"); | b.add_input<decl::String>(N_("String")); | ||||
| b.add_input<decl::Int>("Position"); | b.add_input<decl::Int>(N_("Position")); | ||||
| b.add_input<decl::Int>("Length").min(0).default_value(10); | b.add_input<decl::Int>(N_("Length")).min(0).default_value(10); | ||||
| b.add_output<decl::String>("String"); | b.add_output<decl::String>(N_("String")); | ||||
| }; | }; | ||||
| static void fn_node_slice_string_build_multi_function(NodeMultiFunctionBuilder &builder) | static void fn_node_slice_string_build_multi_function(NodeMultiFunctionBuilder &builder) | ||||
| { | { | ||||
| static blender::fn::CustomMF_SI_SI_SI_SO<std::string, int, int, std::string> slice_fn{ | static blender::fn::CustomMF_SI_SI_SI_SO<std::string, int, int, std::string> slice_fn{ | ||||
| "Slice", [](const std::string &str, int a, int b) { | "Slice", [](const std::string &str, int a, int b) { | ||||
| const int len = BLI_strlen_utf8(str.c_str()); | const int len = BLI_strlen_utf8(str.c_str()); | ||||
| const int start = BLI_str_utf8_offset_from_index(str.c_str(), std::clamp(a, 0, len)); | const int start = BLI_str_utf8_offset_from_index(str.c_str(), std::clamp(a, 0, len)); | ||||
| Show All 17 Lines | |||||