21 #ifndef WITH_PYTHON_MODULE
79 # ifdef WITH_CYCLES_LOGGING
96 const char *str_end_test,
100 const char **r_err_msg)
102 char *str_end =
NULL;
109 value =
pos + strtol(
str + 1, &str_end, 10);
112 value = (neg - strtol(
str + 1, &str_end, 10)) + 1;
115 value = strtol(
str, &str_end, 10);
119 if (*str_end !=
'\0' && (str_end != str_end_test)) {
120 static const char *msg =
"not a number";
124 if ((errno == ERANGE) || ((value < INT_MIN || value > INT_MAX))) {
125 static const char *msg =
"exceeds range";
129 *r_value = (int)value;
135 const char *str_end_range =
NULL;
137 str_end_range = memchr(
str,
'.', (str_end_test -
str) - 1);
138 if (str_end_range && (str_end_range[1] !=
'.')) {
139 str_end_range =
NULL;
143 str_end_range = strstr(
str,
"..");
144 if (str_end_range && (str_end_range[2] ==
'\0')) {
145 str_end_range =
NULL;
148 return str_end_range;
157 const char *str_end_range,
158 const char *str_end_test,
161 int r_value_range[2],
162 const char **r_err_msg)
166 str_end_range + 2, str_end_test,
pos, neg, &r_value_range[1], r_err_msg)) {
173 const char *str_end_test,
179 const char **r_err_msg)
189 const char *str_end_range,
190 const char *str_end_test,
195 int r_value_range[2],
196 const char **r_err_msg)
199 str, str_end_range, str_end_test,
pos, neg, r_value_range, r_err_msg)) {
211 const char *str_end_test,
215 const char **r_err_msg)
217 char *str_end =
NULL;
221 value = strtol(
str, &str_end, 10);
223 if (*str_end !=
'\0' && (str_end != str_end_test)) {
224 static const char *msg =
"not a number";
228 if ((errno == ERANGE) || ((value < min || value >
max))) {
229 static const char *msg =
"exceeds range";
233 *r_value = (int)value;
238 const char *str_end_test,
240 const char **r_err_msg)
246 const char *str_end_test,
250 const char **r_err_msg)
264 static int *parse_int_relative_clamp_n(
265 const char *
str,
int pos,
int neg,
int min,
int max,
int *r_value_len,
const char **r_err_msg)
267 const char sep =
',';
269 for (
int i = 0;
str[i]; i++) {
278 const char *str_end = strchr(
str, sep);
279 if ((*
str == sep) || (*
str ==
'\0')) {
280 static const char *msg =
"incorrect comma use";
321 const char **r_err_msg))[2]
323 const char sep =
',';
325 for (
int i = 0;
str[i]; i++) {
334 const char *str_end_range;
335 const char *str_end = strchr(
str, sep);
337 static const char *msg =
"incorrect comma use";
343 str, str_end_range, str_end,
pos, neg,
min,
max, values[i], r_err_msg) :
345 str, str_end,
pos, neg,
min,
max, &values[i][0], r_err_msg)) {
346 if (str_end_range ==
NULL) {
347 values[i][1] = values[i][0];
379 struct BlendePyContextStore {
386 static void arg_py_context_backup(
bContext *
C,
387 struct BlendePyContextStore *c_py,
388 const char *script_id)
400 "Python script \"%s\" "
401 "running with missing context data.\n",
406 static void arg_py_context_restore(
bContext *
C,
struct BlendePyContextStore *c_py)
422 # define BPY_CTX_SETUP(_cmd) \
424 struct BlendePyContextStore py_c; \
425 arg_py_context_backup(C, &py_c, argv[1]); \
429 arg_py_context_restore(C, &py_c); \
474 printf(
"Blender %s (hash %s built %s %s)\n",
486 "Print Blender version and exit.";
488 const char **
UNUSED(argv),
498 "Print this help text and exit.";
501 "Print this help text and exit (Windows only).";
507 printf(
"Usage: blender [args ...] [file] [args ...]\n\n");
509 printf(
"Render Options:\n");
522 printf(
"Format Options:\n");
527 printf(
"Animation Playback Options:\n");
531 printf(
"Window Options:\n");
541 printf(
"Python Options:\n");
556 printf(
"Logging Options:\n");
565 printf(
"Debug Options:\n");
578 # ifdef WITH_CYCLES_LOGGING
596 # ifdef WITH_XR_OPENXR
612 printf(
"Misc Options:\n");
647 printf(
"Other Options:\n");
652 printf(
"Argument Parsing:\n");
653 printf(
"\tArguments must be separated by white space, eg:\n");
654 printf(
"\t# blender -ba test.blend\n");
655 printf(
"\t...will exit since '-ba' is an unknown argument.\n");
657 printf(
"Argument Order:\n");
658 printf(
"\tArguments are executed in the order they are given. eg:\n");
659 printf(
"\t# blender --background test.blend --render-frame 1 --render-output '/tmp'\n");
661 "\t...will not render to '/tmp' because '--render-frame 1' renders before the output path "
663 printf(
"\t# blender --background --render-output /tmp test.blend --render-frame 1\n");
665 "\t...will not render to '/tmp' because loading the blend-file overwrites the render output "
667 printf(
"\t# blender --background test.blend --render-output /tmp --render-frame 1\n");
668 printf(
"\t...works as expected.\n\n");
670 printf(
"Environment Variables:\n");
671 printf(
" $BLENDER_USER_CONFIG Directory for user configuration files.\n");
672 printf(
" $BLENDER_USER_SCRIPTS Directory for user scripts.\n");
673 printf(
" $BLENDER_SYSTEM_SCRIPTS Directory for system wide scripts.\n");
674 printf(
" $BLENDER_USER_DATAFILES Directory for user data files (icons, translations, ..).\n");
675 printf(
" $BLENDER_SYSTEM_DATAFILES Directory for system wide data files.\n");
676 printf(
" $BLENDER_SYSTEM_PYTHON Directory for system Python libraries.\n");
678 printf(
" $TEMP Store temporary files here.\n");
680 printf(
" $TMP or $TMPDIR Store temporary files here.\n");
690 "End option processing, following arguments passed unchanged. Access via Python's "
693 const char **
UNUSED(argv),
700 # ifndef WITH_PYTHON_SECURITY
701 # define PY_ENABLE_AUTO ", (default)"
702 # define PY_DISABLE_AUTO ""
704 # define PY_ENABLE_AUTO ""
705 # define PY_DISABLE_AUTO ", (compiled as non-standard default)"
713 "Disable automatic Python script execution (pydrivers & startup scripts)" PY_DISABLE_AUTO ".";
714 # undef PY_ENABLE_AUTO
715 # undef PY_DISABLE_AUTO
731 "Disable the crash handler.";
733 const char **
UNUSED(argv),
742 "Disable the abort handler.";
744 const char **
UNUSED(argv),
760 "Immediately exit when internal errors are detected.";
762 const char **
UNUSED(argv),
772 "Run in background (often used for UI-less rendering).";
774 const char **
UNUSED(argv),
784 "\tSet the logging verbosity level (higher for more details) defaults to 1,\n"
785 "\tuse -1 to log all levels.";
788 const char *arg_id =
"--log-level";
790 const char *err_msg =
NULL;
792 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
795 if (
G.log.level == -1) {
796 G.log.level = INT_MAX;
802 printf(
"\nError: '%s' no args given.\n", arg_id);
808 "Only show file name in output (not the leading path).";
810 const char **
UNUSED(argv),
819 "Show a back trace for each log message (debug builds only).";
821 const char **
UNUSED(argv),
832 "Show a timestamp for each log message in seconds since start.";
834 const char **
UNUSED(argv),
843 "\tSet a file to output the log to.";
846 const char *arg_id =
"--log-file";
851 const char *err_msg = errno ? strerror(errno) :
"unknown";
852 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
863 printf(
"\nError: '%s' no args given.\n", arg_id);
869 "\tEnable logging categories, taking a single comma separated argument.\n"
870 "\tMultiple categories can be matched using a '.*' suffix,\n"
871 "\tso '--log \"wm.*\"' logs every kind of window-manager message.\n"
872 "\tSub-string can be matched using a '*' prefix and suffix,\n"
873 "\tso '--log \"*undo*\"' logs every kind of undo-related message.\n"
874 "\tUse \"^\" prefix to ignore, so '--log \"*,^wm.operator.*\"' logs all except for "
876 "\tUse \"*\" to log everything.";
879 const char *arg_id =
"--log";
881 const char *str_step = argv[1];
883 const char *str_step_end = strchr(str_step,
',');
884 int str_step_len = str_step_end ? (str_step_end - str_step) : strlen(str_step);
886 if (str_step[0] ==
'^') {
895 while (*str_step_end ==
',') {
898 str_step = str_step_end;
906 printf(
"\nError: '%s' no args given.\n", arg_id);
912 "\tTurn debugging on.\n"
914 "\t* Enables memory error detection\n"
915 "\t* Disables mouse grab (to interact with a debugger in some cases)\n"
916 "\t* Keeps Python's 'sys.stdin' rather than setting it to None";
926 # ifdef WITH_BUILDINFO
935 static const char arg_handle_debug_mode_generic_set_doc_ffmpeg[] =
937 "Enable debug messages from FFmpeg library.";
939 # ifdef WITH_FREESTYLE
940 static const char arg_handle_debug_mode_generic_set_doc_freestyle[] =
942 "Enable debug messages for Freestyle.";
946 "Enable debug messages for Python.";
949 "Enable debug messages for the event system.";
952 "Enable debug messages for event handling.";
955 "Enable debug messages for the window manager, shows all operators in search, shows "
957 # ifdef WITH_XR_OPENXR
958 static const char arg_handle_debug_mode_generic_set_doc_xr[] =
960 "Enable debug messages for virtual reality contexts.\n"
961 "\tEnables the OpenXR API validation layer, (OpenXR) debug messages and general information "
963 static const char arg_handle_debug_mode_generic_set_doc_xr_time[] =
965 "Enable debug messages for virtual reality frame rendering times.";
969 "Enable time profiling for background jobs.";
972 "Enable GPU debug context and information for OpenGL 4.3+.";
975 "Enable all debug messages from dependency graph.";
978 "Enable debug messages from dependency graph related on graph construction.";
981 "Enable debug messages from dependency graph related on tagging.";
984 "Enable debug messages from dependency graph related on timing.";
987 "Enable debug messages from dependency graph related on evaluation.";
990 "Switch dependency graph to a single threaded evaluation.";
993 "Enable colors for dependency graph debug messages.";
996 "Enable workarounds for typical GPU issues and disable all GPU extensions.";
999 const char **
UNUSED(argv),
1008 "Enable debug messages for I/O (Collada, ...).";
1010 const char **
UNUSED(argv),
1019 "Enable all debug messages.";
1021 const char **
UNUSED(argv),
1028 # ifdef WITH_CYCLES_LOGGING
1035 static const char arg_handle_debug_mode_libmv_doc[] =
1037 "Enable debug messages from libmv library.";
1038 static int arg_handle_debug_mode_libmv(
int UNUSED(argc),
1039 const char **
UNUSED(argv),
1048 # ifdef WITH_CYCLES_LOGGING
1049 static const char arg_handle_debug_mode_cycles_doc[] =
1051 "Enable debug messages from Cycles.";
1052 static int arg_handle_debug_mode_cycles(
int UNUSED(argc),
1053 const char **
UNUSED(argv),
1063 "Enable fully guarded memory allocation and debugging.";
1065 const char **
UNUSED(argv),
1074 "\tSet debug value of <value> on startup.";
1077 const char *arg_id =
"--debug-value";
1079 const char *err_msg =
NULL;
1082 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1086 G.debug_value = value;
1090 printf(
"\nError: you must specify debug value to set.\n");
1096 "Enable floating-point exceptions.";
1098 const char **
UNUSED(argv),
1107 "\tSet the application template (matching the directory name), use 'default' for none.";
1115 printf(
"\nError: App template must follow '--app-template'.\n");
1123 const char **
UNUSED(argv),
1126 G.factory_startup = 1;
1133 "Enable event simulation testing feature 'bpy.types.Window.event_simulate'.";
1135 const char **
UNUSED(argv),
1156 char env[64] =
"BLENDER";
1157 char *ch_dst = env + 7;
1158 const char *ch_src = argv[0] + 5;
1161 printf(
"%s requires one argument\n", argv[0]);
1165 for (; *ch_src; ch_src++, ch_dst++) {
1166 *ch_dst = (*ch_src ==
'-') ?
'_' : (*ch_src) - 32;
1175 "<options> <file(s)>\n"
1176 "\tInstead of showing Blender's user interface, this runs Blender as an animation player,\n"
1177 "\tto view movies and image sequences rendered in Blender (ignored if '-b' is set).\n"
1179 "\tPlayback Arguments:\n"
1182 "\t\tOpen with lower left corner at <sx>, <sy>.\n"
1184 "\t\tRead from disk (Do not buffer).\n"
1185 "\t-f <fps> <fps-base>\n"
1186 "\t\tSpecify FPS to start with.\n"
1188 "\t\tSet frame step to <frame>.\n"
1190 "\t\tPlay from <frame>.\n"
1192 "\t\tPlay until <frame>.\n"
1193 "\t-c <cache_memory>\n"
1194 "\t\tAmount of memory in megabytes to allow for caching images during playback.\n"
1195 "\t\tZero disables (clamping to a fixed number of frames instead).";
1199 if (
G.background == 0) {
1213 "<sx> <sy> <w> <h>\n"
1214 "\tOpen with lower left corner at <sx>, <sy> and width and height as <w>, <h>.";
1217 const char *arg_id =
"-p / --window-geometry";
1221 fprintf(stderr,
"Error: requires four arguments '%s'\n", arg_id);
1225 for (i = 0; i < 4; i++) {
1226 const char *err_msg =
NULL;
1228 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1240 "Do not use native pixel size, for high resolution displays (MacBook 'Retina').";
1242 const char **
UNUSED(argv),
1251 "Force opening with borders.";
1260 "Force opening in fullscreen mode.";
1262 const char **
UNUSED(argv),
1271 "Force opening maximized.";
1273 const char **
UNUSED(argv),
1282 "Open behind other windows and without taking focus.";
1284 const char **
UNUSED(argv),
1293 "Start with the console window open (ignored if '-b' is set), (Windows only).";
1295 const char **
UNUSED(argv),
1304 "Register blend-file extension, then exit (Windows only).";
1307 "Silently register blend-file extension, then exit (Windows only).";
1323 "Force sound system to None.";
1325 const char **
UNUSED(argv),
1334 "Force sound system to a specific device."
1336 "'None' 'SDL' 'OpenAL' 'CoreAudio' 'JACK' 'PulseAudio' 'WASAPI'.";
1340 fprintf(stderr,
"-setaudio require one argument\n");
1350 "\tSet the render path and file name.\n"
1351 "\tUse '//' at the start of the path to render relative to the blend-file.\n"
1353 "\tThe '#' characters are replaced by the frame number, and used to define zero padding.\n"
1355 "\t* 'animation_##_test.png' becomes 'animation_01_test.png'\n"
1356 "\t* 'test-######.png' becomes 'test-000001.png'\n"
1358 "\tWhen the filename does not contain '#', The suffix '####' is added to the filename.\n"
1360 "\tThe frame number will be added at the end of the filename, eg:\n"
1361 "\t# blender -b animation.blend -o //render_ -F PNG -x 1 -a\n"
1362 "\t'//render_' becomes '//render_####', writing frames as '//render_0001.png'";
1373 printf(
"\nError: no blend loaded. cannot use '-o / --render-output'.\n");
1377 printf(
"\nError: you must specify a path after '-o / --render-output'.\n");
1383 "\tSpecify the render engine.\n"
1384 "\tUse '-E help' to list available engines.";
1389 if (
STREQ(argv[1],
"help")) {
1391 printf(
"Blender Engine Listing:\n");
1393 printf(
"\t%s\n",
type->idname);
1405 printf(
"\nError: engine not found '%s'\n", argv[1]);
1411 "\nError: no blend loaded. "
1412 "order the arguments so '-E / --engine' is after a blend is loaded.\n");
1418 printf(
"\nEngine not specified, give 'help' for a list of available engines.\n");
1424 "\tSet the render format.\n"
1425 "\tValid options are:\n"
1426 "\t'TGA' 'RAWTGA' 'JPEG' 'IRIS' 'IRIZ' 'AVIRAW' 'AVIJPEG' 'PNG' 'BMP'\n"
1428 "\tFormats that can be compiled into Blender, not available on all systems:\n"
1429 "\t'HDR' 'TIFF' 'OPEN_EXR' 'OPEN_EXR_MULTILAYER' 'MPEG' 'CINEON' 'DPX' 'DDS' 'JP2'";
1434 const char *imtype = argv[1];
1441 "\nError: Format from '-F / --render-format' not known or not compiled in this "
1451 "\nError: no blend loaded. "
1452 "order the arguments so '-F / --render-format' is after the blend is loaded.\n");
1456 printf(
"\nError: you must specify a format after '-F / --render-format'.\n");
1462 "\tUse amount of <threads> for rendering and other operations\n"
1466 const char *arg_id =
"-t / --threads";
1469 const char *err_msg =
NULL;
1472 printf(
"\nError: %s '%s %s', expected number in [%d..%d].\n",
1484 printf(
"\nError: you must specify a number of threads in [%d..%d] '%s'.\n",
min,
max, arg_id);
1490 "\tSet the logging verbosity level for debug messages that support it.";
1493 const char *arg_id =
"--verbose";
1495 const char *err_msg =
NULL;
1498 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1503 # elif defined(WITH_CYCLES_LOGGING)
1511 printf(
"\nError: you must specify a verbosity level.\n");
1517 "\tSet option to add the file extension to the end of the file.";
1524 if (argv[1][0] ==
'0') {
1528 else if (argv[1][0] ==
'1') {
1533 printf(
"\nError: Use '-x 1 / -x 0' To set the extension option or '--use-extension'\n");
1538 "\nError: no blend loaded. "
1539 "order the arguments so '-o ' is after '-x '.\n");
1543 printf(
"\nError: you must specify a path after '- '.\n");
1549 "\tRender frame <frame> and save it.\n"
1551 "\t* +<frame> start frame relative, -<frame> end frame relative.\n"
1552 "\t* A comma separated list of frames can also be used (no spaces).\n"
1553 "\t* A range of frames can be expressed using '..' separator between the first and last "
1554 "frames (inclusive).\n";
1557 const char *arg_id =
"-f / --render-frame";
1564 const char *err_msg =
NULL;
1568 int(*frame_range_arr)[2], frames_range_len;
1575 &err_msg)) ==
NULL) {
1576 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1583 for (
int i = 0; i < frames_range_len; i++) {
1586 if ((frame_range_arr[i][0] <= frame_range_arr[i][1]) == 0) {
1587 printf(
"\nWarning: negative range ignored '%s %s'.\n", arg_id, argv[1]);
1590 for (
int frame = frame_range_arr[i][0]; frame <= frame_range_arr[i][1]; frame++) {
1599 printf(
"\nError: frame number must follow '%s'.\n", arg_id);
1602 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1608 "Render frames from start to end (inclusive).";
1624 printf(
"\nError: no blend loaded. cannot use '-a'.\n");
1631 "\tSet the active scene <name> for rendering.";
1652 printf(
"\nError: Scene name must follow '-S / --scene'.\n");
1658 "\tSet start to frame <frame>, supports +/- for relative frames too.";
1661 const char *arg_id =
"-s / --frame-start";
1666 const char *err_msg =
NULL;
1675 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1682 printf(
"\nError: frame number must follow '%s'.\n", arg_id);
1685 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1691 "\tSet end to frame <frame>, supports +/- for relative frames too.";
1694 const char *arg_id =
"-e / --frame-end";
1699 const char *err_msg =
NULL;
1708 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1715 printf(
"\nError: frame number must follow '%s'.\n", arg_id);
1718 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1724 "\tSet number of frames to step forward after each rendered frame.";
1727 const char *arg_id =
"-j / --frame-jump";
1732 const char *err_msg =
NULL;
1734 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1741 printf(
"\nError: number of frames to step must follow '%s'.\n", arg_id);
1744 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1750 "\tRun the given Python script file.";
1766 printf(
"\nError: script failed, file: '%s', exiting.\n", argv[1]);
1772 printf(
"\nError: you must specify a filepath after '%s'.\n", argv[0]);
1777 printf(
"This Blender was built without Python support\n");
1784 "\tRun the given Python script text block.";
1801 printf(
"\nError: text block not found %s.\n", argv[1]);
1806 printf(
"\nError: script failed, text: '%s', exiting.\n", argv[1]);
1813 printf(
"\nError: you must specify a text block after '%s'.\n", argv[0]);
1818 printf(
"This Blender was built without Python support\n");
1825 "\tRun the given expression as a Python script.";
1836 printf(
"\nError: script failed, expr: '%s', exiting.\n", argv[1]);
1842 printf(
"\nError: you must specify a Python expression after '%s'.\n", argv[0]);
1847 printf(
"This Blender was built without Python support\n");
1854 "Run Blender with an interactive console.";
1865 printf(
"This Blender was built without python support\n");
1872 "\tSet the exit-code in [0..255] to exit if a Python exception is raised\n"
1873 "\t(only for scripts executed from the command line), zero disables.";
1876 const char *arg_id =
"--python-exit-code";
1878 const char *err_msg =
NULL;
1879 const int min = 0,
max = 255;
1882 printf(
"\nError: %s '%s %s', expected number in [%d..%d].\n",
1894 printf(
"\nError: you must specify an exit code number '%s'.\n", arg_id);
1900 "Allow Python to use system environment variables such as 'PYTHONPATH' and the user "
1901 "site-packages directory.";
1903 const char **
UNUSED(argv),
1914 "\tComma separated list of add-ons (no spaces).";
1920 const char script_str[] =
1921 "from addon_utils import check, enable\n"
1922 "for m in '%s'.split(','):\n"
1923 " if check(m)[1] is False:\n"
1924 " enable(m, persistent=True)";
1925 const int slen = strlen(argv[1]) + (
sizeof(script_str) - 2);
1926 char *
str = malloc(slen);
1938 printf(
"\nError: you must specify a comma separated list after '--addons'.\n");
1952 if (argv[0][0] ==
'-') {
1953 fprintf(stderr,
"unknown argument, loading as file: %s\n", argv[0]);
1987 G.relbase_valid =
true;
1989 printf(
"... opened default scene instead; saving will write to: %s\n", filename);
1993 "Error: argument has no '.blend' file extension, not using as new file, exiting! %s\n",
2007 "Open the most recently opened blend file, instead of the default startup file.";
2011 printf(
"Warning: no recent files known, opening default startup file instead.\n");
2015 const RecentFile *recent_file =
G.recent_files.first;
2016 const char *fake_argv[] = {recent_file->
filepath};
2023 # define CB(a) a##_doc, a
2024 # define CB_EX(a, b) a##_doc_##b, a
2087 # ifdef WITH_FREESTYLE
2091 "--debug-freestyle",
2116 # ifdef WITH_XR_OPENXR
2140 # ifdef WITH_CYCLES_LOGGING
2155 "--debug-depsgraph",
2160 "--debug-depsgraph-build",
2165 "--debug-depsgraph-eval",
2170 "--debug-depsgraph-tag",
2175 "--debug-depsgraph-time",
2181 "--debug-depsgraph-no-threads",
2186 "--debug-depsgraph-pretty",
2191 "--debug-depsgraph-uuid",
2196 "--debug-gpu-force-workarounds",
@ BLENDER_SYSTEM_DATAFILES
#define BLENDER_STARTUP_FILE
const char * BKE_blender_version_string(void)
struct Scene * CTX_data_scene(const bContext *C)
void CTX_data_scene_set(bContext *C, struct Scene *scene)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
void CTX_wm_window_set(bContext *C, struct wmWindow *win)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
@ G_DEBUG_GPU_FORCE_WORKAROUNDS
@ G_DEBUG_DEPSGRAPH_PRETTY
@ G_DEBUG_DEPSGRAPH_NO_THREADS
@ G_DEBUG_DEPSGRAPH_BUILD
@ G_FLAG_SCRIPT_OVERRIDE_PREF
@ G_FLAG_USERPREF_NO_SAVE_ON_EXIT
char BKE_imtype_from_arg(const char *arg)
struct ID * BKE_libblock_find_name(struct Main *bmain, const short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_reports_clear(ReportList *reports)
void BKE_reports_init(ReportList *reports, int flag)
struct Scene * BKE_scene_set_name(struct Main *bmain, const char *name)
void BKE_sound_force_device(const char *device)
A general argument parsing module.
void BLI_args_parse(struct bArgs *ba, int pass, BA_ArgCallback default_cb, void *data)
void BLI_args_print(struct bArgs *ba)
void BLI_args_print_other_doc(struct bArgs *ba)
void BLI_args_print_arg_doc(struct bArgs *ba, const char *arg)
void BLI_args_add_case(struct bArgs *ba, const char *short_arg, int short_case, const char *long_arg, int long_case, const char *doc, BA_ArgCallback cb, void *data)
void BLI_args_pass_set(struct bArgs *ba, int current_pass)
void BLI_args_add(struct bArgs *ba, const char *short_arg, const char *long_arg, const char *doc, BA_ArgCallback cb, void *data)
bool BLI_args_has_other_doc(const struct bArgs *ba)
File and directory operations.
FILE * BLI_fopen(const char *filename, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_kdtree_nd_() free(KDTree *tree)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void void void BLI_mempool_set_memory_debug(void)
void BLI_setenv(const char *env, const char *val) ATTR_NONNULL(1)
bool BLI_path_abs_from_cwd(char *path, const size_t maxlen) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
void BLI_system_backtrace(FILE *fp)
void BLI_system_num_threads_override_set(int num)
#define BLENDER_MAX_THREADS
#define POINTER_AS_INT(i)
Compatibility-like things for windows.
void BLI_windows_register_blend_extension(const bool background)
external readfile function prototypes.
bool BLO_has_bfile_extension(const char *str)
void BPY_python_use_system_env(void)
void BPY_python_end(void)
bool BPY_run_string_eval(struct bContext *C, const char *imports[], const char *expr)
bool BPY_run_text(struct bContext *C, struct Text *text, struct ReportList *reports, const bool do_jump)
bool BPY_run_string_exec(struct bContext *C, const char *imports[], const char *expr)
bool BPY_run_filepath(struct bContext *C, const char *filepath, struct ReportList *reports)
void CLG_type_filter_include(const char *type_filter, int type_filter_len)
void CLG_output_set(void *file_handle)
void CLG_output_use_basename_set(int value)
void CLG_error_fn_set(void(*error_fn)(void *file_handle))
void CLG_backtrace_fn_set(void(*fatal_fn)(void *file_handle))
void CLG_type_filter_exclude(const char *type_filter, int type_filter_len)
void CLG_level_set(int level)
void CLG_output_use_timestamp_set(int value)
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_COPY_ON_WRITE
#define R_IMF_IMTYPE_INVALID
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
void IMB_ffmpeg_init(void)
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera CLAMP
void CCL_logging_verbosity_set(int verbosity)
void CCL_start_debug_logging()
struct ApplicationState app_state
static int arg_handle_audio_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_engine_set_doc[]
static const char arg_handle_debug_mode_io_doc[]
static int arg_handle_debug_mode_set(int UNUSED(argc), const char **UNUSED(argv), void *data)
static int arg_handle_threads_set(int argc, const char **argv, void *UNUSED(data))
static int arg_handle_audio_disable(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_factory_startup_set_doc[]
static int arg_handle_render_frame(int argc, const char **argv, void *data)
static const char arg_handle_scene_set_doc[]
static const char arg_handle_debug_mode_generic_set_doc_jobs[]
static const char arg_handle_frame_start_set_doc[]
static bool parse_int_relative(const char *str, const char *str_end_test, int pos, int neg, int *r_value, const char **r_err_msg)
static const char arg_handle_output_set_doc[]
static int arg_handle_register_extension(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_render_animation_doc[]
static const char arg_handle_debug_mode_generic_set_doc_wm[]
static const char arg_handle_env_system_set_doc_datafiles[]
static const char arg_handle_verbosity_set_doc[]
static const char arg_handle_env_system_set_doc_python[]
static const char arg_handle_print_version_doc[]
static const char arg_handle_debug_value_set_doc[]
static const char arg_handle_with_borders_doc[]
static int arg_handle_python_text_run(int argc, const char **argv, void *data)
static int arg_handle_output_set(int argc, const char **argv, void *data)
static int(* parse_int_range_relative_clamp_n(const char *str, int pos, int neg, int min, int max, int *r_value_len, const char **r_err_msg))[2]
static int arg_handle_load_file(int UNUSED(argc), const char **argv, void *data)
static bool parse_int_range_relative_clamp(const char *str, const char *str_end_range, const char *str_end_test, int pos, int neg, int min, int max, int r_value_range[2], const char **r_err_msg)
static const char arg_handle_log_set_doc[]
static void print_version_full(void)
static bool parse_int_range_relative(const char *str, const char *str_end_range, const char *str_end_test, int pos, int neg, int r_value_range[2], const char **r_err_msg)
static const char arg_handle_native_pixels_set_doc[]
static int arg_handle_native_pixels_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_enable_event_simulate(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_debug_value_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_handlers[]
static int arg_handle_crash_handler_disable(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_log_level_set_doc[]
static const char arg_handle_python_console_run_doc[]
static int arg_handle_render_animation(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_debug_mode_set_doc[]
static bool parse_int_clamp(const char *str, const char *str_end_test, int min, int max, int *r_value, const char **r_err_msg)
static const char arg_handle_frame_end_set_doc[]
static const char arg_handle_register_extension_doc[]
static int arg_handle_window_geometry(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_no_threads[]
static int arg_handle_extension_set(int argc, const char **argv, void *data)
static int arg_handle_print_help(int UNUSED(argc), const char **UNUSED(argv), void *data)
static int arg_handle_python_expr_run(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_python[]
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_time[]
static const char arg_handle_python_exit_code_set_doc[]
static int arg_handle_without_borders(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_register_extension_doc_silent[]
static int arg_handle_load_last_file(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_without_borders_doc[]
static const char arg_handle_python_expr_run_doc[]
void main_args_setup(bContext *C, bArgs *ba)
static int arg_handle_python_exit_code_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_frame_skip_set_doc[]
static const char arg_handle_python_set_doc_disable[]
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_eval[]
static int arg_handle_print_version(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_build[]
static int arg_handle_playback_mode(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_env_system_set_doc_scripts[]
static const char arg_handle_window_maximized_doc[]
static const char arg_handle_python_text_run_doc[]
static int arg_handle_app_template(int argc, const char **argv, void *UNUSED(data))
static int arg_handle_scene_set(int argc, const char **argv, void *data)
static const char arg_handle_image_type_set_doc[]
static void clog_abort_on_error_callback(void *fp)
static int arg_handle_env_system_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_render_frame_doc[]
static const char arg_handle_print_help_doc_win32[]
static int arg_handle_debug_fpe_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_background_mode_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_audio_disable_doc[]
static void print_version_short(void)
static bool parse_int(const char *str, const char *str_end_test, int *r_value, const char **r_err_msg)
static const char arg_handle_start_with_console_doc[]
static int arg_handle_log_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_addons_set_doc[]
static int arg_handle_arguments_end(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_addons_set(int argc, const char **argv, void *data)
static int arg_handle_image_type_set(int argc, const char **argv, void *data)
static const char arg_handle_print_help_doc[]
static int arg_handle_abort_handler_disable(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_python_use_system_env_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_log_show_basename_set_doc[]
static int arg_handle_no_window_focus(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_extension_set_doc[]
static int arg_handle_debug_mode_memory_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static bool parse_int_relative_clamp(const char *str, const char *str_end_test, int pos, int neg, int min, int max, int *r_value, const char **r_err_msg)
static const char * parse_int_range_sep_search(const char *str, const char *str_end_test)
static const char arg_handle_debug_mode_memory_set_doc[]
static const char arg_handle_background_mode_set_doc[]
static int arg_handle_python_console_run(int UNUSED(argc), const char **argv, void *data)
static int arg_handle_debug_mode_generic_set(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_tag[]
static int arg_handle_log_show_backtrace_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_log_show_backtrace_set_doc[]
static int arg_handle_factory_startup_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_enable_event_simulate_doc[]
static bool parse_int_strict_range(const char *str, const char *str_end_test, const int min, const int max, int *r_value, const char **r_err_msg)
static int arg_handle_python_set(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph[]
static int arg_handle_start_with_console(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_debug_mode_io(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_with_borders(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_fpe_set_doc[]
static int arg_handle_python_file_run(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_pretty[]
void main_args_setup_post(bContext *C, bArgs *ba)
static int arg_handle_frame_end_set(int argc, const char **argv, void *data)
static int arg_handle_verbosity_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_log_file_set_doc[]
static const char arg_handle_window_geometry_doc[]
static const char arg_handle_python_file_run_doc[]
static const char arg_handle_python_set_doc_enable[]
static const char arg_handle_arguments_end_doc[]
static const char arg_handle_load_last_file_doc[]
static const char arg_handle_crash_handler_disable_doc[]
static const char arg_handle_app_template_doc[]
static int arg_handle_log_show_timestamp_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_log_show_basename_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_threads_set_doc[]
static const char arg_handle_python_use_system_env_set_doc[]
static const char arg_handle_log_show_timestamp_set_doc[]
static const char arg_handle_debug_mode_generic_set_doc_gpu[]
static int arg_handle_debug_mode_all(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_abort_handler_disable_doc[]
static const char arg_handle_debug_exit_on_error_doc[]
static const char arg_handle_playback_mode_doc[]
static const char arg_handle_debug_mode_generic_set_doc_events[]
static int arg_handle_log_file_set(int argc, const char **argv, void *UNUSED(data))
static int arg_handle_window_maximized(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_gpu_force_workarounds[]
static int arg_handle_frame_skip_set(int argc, const char **argv, void *data)
static int arg_handle_frame_start_set(int argc, const char **argv, void *data)
static int arg_handle_debug_exit_on_error(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_log_level_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_no_window_focus_doc[]
static int arg_handle_engine_set(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_all_doc[]
static const char arg_handle_audio_set_doc[]
@ ARG_PASS_SETTINGS_FORCE
void main_signal_setup_fpe(void)
const Depsgraph * depsgraph
void MEM_enable_fail_on_memleak(void)
void libmv_setLoggingVerbosity(int verbosity)
void libmv_startDebugLogging(void)
void(* MEM_freeN)(void *vmemh)
void(* MEM_set_memory_debug)(void)
void *(* MEM_mallocN)(size_t len, const char *str)
ListBase threads
list of all thread for every CPUDevice in cpudevices a thread exists.
Render * RE_NewSceneRender(const Scene *scene)
void RE_RenderAnim(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int sfra, int efra, int tfra)
void RE_SetReports(Render *re, ReportList *reports)
struct ApplicationState::@1183 exit_code_on_error
struct ApplicationState::@1182 signal
struct ImageFormatData im_format
void WM_init_state_app_template_set(const char *app_template)
bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
void WM_file_autoexec_init(const char *filepath)
void WM_exit(bContext *C)
Main exit function to close Blender ordinarily.
void WM_init_state_start_with_console_set(bool value)
void WM_main_playanim(int argc, const char **argv)
void WM_window_set_active_scene(Main *bmain, bContext *C, wmWindow *win, Scene *scene)
void WM_init_state_normal_set(void)
void WM_init_native_pixels(bool do_it)
void WM_init_state_maximized_set(void)
void WM_init_state_size_set(int stax, int stay, int sizx, int sizy)
void WM_init_state_fullscreen_set(void)
void WM_init_window_focus_set(bool do_it)