From 0a45e3348a828ed751a52f7f3f0fe92d95675ef7 Mon Sep 17 00:00:00 2001 From: vipulrajan Date: Fri, 20 Dec 2024 14:24:53 +0530 Subject: [PATCH] added a doc file explaining slicing call hierarchy (#7796) --- doc/developer-reference/Home.md | 1 + doc/developer-reference/slicing-hierarchy.md | 5 +++++ doc/images/slicing_call_heirarchy.svg | 4 ++++ 3 files changed, 10 insertions(+) create mode 100644 doc/developer-reference/slicing-hierarchy.md create mode 100644 doc/images/slicing_call_heirarchy.svg diff --git a/doc/developer-reference/Home.md b/doc/developer-reference/Home.md index ab08f2cbfea..99a9c0f689d 100644 --- a/doc/developer-reference/Home.md +++ b/doc/developer-reference/Home.md @@ -4,3 +4,4 @@ This is a documentation from someone exploring the code and is by no means compl - [Preset, PresetBundle and PresetCollection](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Preset-and-bundle.md) - [Plater, Sidebar, Tab, ComboBox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/plater-sidebar-tab-combobox.md) +- [Slicing Call Hierarchy](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/slicing-hierarchy.md) diff --git a/doc/developer-reference/slicing-hierarchy.md b/doc/developer-reference/slicing-hierarchy.md new file mode 100644 index 00000000000..65d28e11aad --- /dev/null +++ b/doc/developer-reference/slicing-hierarchy.md @@ -0,0 +1,5 @@ +## Slicing Call Hierarchy + +The Slicing logic is not the easiest to locate in the code base. Below is a flow diagram of function calls that are made after clicking the `Slice Plate` button in the UI. Most of the processing happens in different threads. Note the calls after `BackgroundSlicingProcess::start()`, but this is how you can find the slicing logic. + +Example Image diff --git a/doc/images/slicing_call_heirarchy.svg b/doc/images/slicing_call_heirarchy.svg new file mode 100644 index 00000000000..2a2ffbf8476 --- /dev/null +++ b/doc/images/slicing_call_heirarchy.svg @@ -0,0 +1,4 @@ + + + +
void Plater::priv::on_action_slice_plate(SimpleEvent&)
void Plater::reslice()
bool Plater::priv::restart_background_process(unsigned int state)
bool BackgroundSlicingProcess::start()
void BackgroundSlicingProcess::thread_proc_safe_seh_throw()
unsigned long BackgroundSlicingProcess::thread_proc_safe_seh()
void BackgroundSlicingProcess::thread_proc_safe()
void BackgroundSlicingProcess::thread_proc()
void BackgroundSlicingProcess::call_process_seh_throw(std::exception_ptr &ex)
unsigned long BackgroundSlicingProcess::call_process_seh(std::exception_ptr &ex)
void BackgroundSlicingProcess::call_process(std::exception_ptr &ex)
void BackgroundSlicingProcess::process_fff()
void Print::process(long long *time_cost_with_cache, bool use_cache)
void PrintObject::make_perimeters()
void PrintObject::slice()
libslic3r
libslic3r_gui
\ No newline at end of file