OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
GLCanvas3D.cpp File Reference
#include "libslic3r/libslic3r.h"
#include "libslic3r/Point.hpp"
#include <limits>
#include <string>
#include <sstream>
#include <iomanip>
#include <imgui.h>
#include <wx/event.h>
#include "slic3r/GUI/Event.hpp"
#include <vector>
#include <utility>
#include "libslic3r/Slicing.hpp"
#include "slic3r/GUI/Gizmos/GLGizmosManager.hpp"
#include <cstddef>
#include <array>
#include <cassert>
#include <climits>
#include "libslic3r/BoundingBox.hpp"
#include <chrono>
#include "libslic3r/Polygon.hpp"
#include "libslic3r/LocalesUtils.hpp"
#include "libslic3r/Config.hpp"
#include <wx/timer.h>
#include "slic3r/GUI/IMSlider.hpp"
#include "libslic3r/Preset.hpp"
#include "libslic3r/Model.hpp"
#include <memory>
#include "slic3r/GUI/SceneRaycaster.hpp"
#include "slic3r/GUI/Camera.hpp"
#include "slic3r/GUI/GCodeViewer.hpp"
#include <optional>
#include <map>
#include "slic3r/GUI/GUI_Geometry.hpp"
#include "libslic3r/PrintBase.hpp"
#include <tuple>
#include "libslic3r/SLA/SupportPoint.hpp"
#include "slic3r/GUI/MeshUtils.hpp"
#include "libslic3r/GCode/WipeTowerEstimate.hpp"
#include "slic3r/GUI/Gizmos/GLGizmoBase.hpp"
#include <wx/window.h>
#include "slic3r/GUI/GLTexture.hpp"
#include <ratio>
#include <wx/string.h>
#include "slic3r/GUI/GLToolbar.hpp"
#include <math.h>
#include <Eigen/Core>
#include <iterator>
#include <wx/app.h>
#include <cstdlib>
#include <wx/setup.h>
#include "libslic3r/Line.hpp"
#include "libslic3r/Format/bbs_3mf.hpp"
#include "libslic3r/LifecycleEvents.hpp"
#include "slic3r/GUI/GUI_ObjectLayers.hpp"
#include "libslic3r/GCode/WipeTower.hpp"
#include "libslic3r/Geometry.hpp"
#include <wx/gdicmn.h>
#include "slic3r/GUI/Jobs/Job.hpp"
#include <cstring>
#include "libslic3r/Color.hpp"
#include <boost/container_hash/hash.hpp>
#include <cstdint>
#include <functional>
#include <wx/colour.h>
#include <string_view>
#include "slic3r/GUI/Selection.hpp"
#include "GLCanvas3D.hpp"
#include "SequentialPrintClearance.hpp"
#include <igl/unproject.h>
#include "libslic3r/BuildVolume.hpp"
#include "libslic3r/ClipperUtils.hpp"
#include "libslic3r/PrintConfig.hpp"
#include "libslic3r/GCode/ThumbnailData.hpp"
#include "libslic3r/Geometry/ConvexHull.hpp"
#include "libslic3r/ExtrusionEntity.hpp"
#include "libslic3r/Layer.hpp"
#include "libslic3r/Utils.hpp"
#include "libslic3r/Technologies.hpp"
#include "libslic3r/Tesselate.hpp"
#include "libslic3r/PresetBundle.hpp"
#include "libslic3r/AppConfig.hpp"
#include "3DScene.hpp"
#include "BackgroundSlicingProcess.hpp"
#include "CameraUtils.hpp"
#include "GLModel.hpp"
#include "GLShader.hpp"
#include "libslic3r/ConnectedBodies.hpp"
#include "GUI.hpp"
#include "Tab.hpp"
#include "GUI_Preview.hpp"
#include "OpenGLManager.hpp"
#include "Plater.hpp"
#include "MainFrame.hpp"
#include "WipeTowerDialog.hpp"
#include "GUI_App.hpp"
#include "Shortcuts.hpp"
#include "GUI_ObjectList.hpp"
#include "GUI_Colors.hpp"
#include "Mouse3DController.hpp"
#include "I18N.hpp"
#include "format.hpp"
#include "NotificationManager.hpp"
#include "DailyTips.hpp"
#include "FilamentMapDialog.hpp"
#include "Gizmos/GLGizmoUtils.hpp"
#include "slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp"
#include "slic3r/Utils/UndoRedo.hpp"
#include "slic3r/Utils/MacDarkMode.hpp"
#include "slic3r/plugin/PluginManager.hpp"
#include <slic3r/GUI/GUI_Utils.hpp>
#include <glad/gl.h>
#include <wx/glcanvas.h>
#include <wx/bitmap.h>
#include <wx/dcmemory.h>
#include <wx/image.h>
#include <wx/settings.h>
#include <wx/tooltip.h>
#include <wx/debug.h>
#include <wx/utils.h>
#include <wx/fontutil.h>
#include "libslic3r/Print.hpp"
#include "libslic3r/SLAPrint.hpp"
#include "wxExtensions.hpp"
#include <tbb/parallel_for.h>
#include <tbb/spin_mutex.h>
#include <boost/functional/hash.hpp>
#include <boost/format.hpp>
#include <boost/log/trivial.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <iostream>
#include <float.h>
#include <algorithm>
#include <cmath>
#include <set>
#include <imgui/imgui_internal.h>
#include <imguizmo/ImGuizmo.h>
#include "libslic3r/CutUtils.hpp"
#include "libslic3r/EmbossShape.hpp"
#include "libslic3r/ExPolygon.hpp"
#include "libslic3r/GCode/GCodeProcessor.hpp"
#include "libslic3r/MultiMaterialSegmentation.hpp"
#include "libslic3r/SLA/Pad.hpp"
#include "libslic3r/TextConfiguration.hpp"
#include "libslic3r/TriangleMesh.hpp"
#include "slic3r/GUI/3DBed.hpp"
#include "slic3r/GUI/FrameProfiler.hpp"
#include "slic3r/GUI/GLSelectionRectangle.hpp"
#include "slic3r/GUI/IMToolbar.hpp"
#include "slic3r/GUI/ImGuiWrapper.hpp"
#include "slic3r/GUI/KeyChord.hpp"
#include "slic3r/GUI/ObjectDataViewModel.hpp"
#include "slic3r/GUI/PartPlate.hpp"
#include "slic3r/GUI/SceneCache.hpp"
#include "slic3r/Utils/NetworkAgent.hpp"

Go to the source code of this file.

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::GUI

Macros

#define IMGUI_DEFINE_MATH_OPERATORS
#define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT   0
#define USE_PARALLEL   1

Functions

static void Slic3r::GUI::pan_camera (Camera &camera, const Vec2d &screen_delta, const Vec3d &anchor)
std::string & Slic3r::GUI::get_object_limited_text ()
std::string & Slic3r::GUI::get_object_clashed_text ()
std::string & Slic3r::GUI::get_left_extruder_unprintable_text ()
std::string & Slic3r::GUI::get_right_extruder_unprintable_text ()
std::string & Slic3r::GUI::get_nozzle_filament_incompatible_text ()
std::string & Slic3r::GUI::get_filament_mixture_warning_text ()
std::string & Slic3r::GUI::get_single_extruder_mixed_filament_warning_text ()
static std::string Slic3r::GUI::format_number (float value)
static GCodeProcessorResult::ObjectMass::Sum Slic3r::GUI::mass_sum (const MassProperties &solid)
static double Slic3r::GUI::marker_scale (const GLCanvas3D &canvas)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_OBJECT_SELECT, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_PLATE_NAME_CHANGE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_PLATE_SELECT, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_RIGHT_CLICK, RBtnEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_PLATE_RIGHT_CLICK, RBtnPlateEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_REMOVE_OBJECT, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_ARRANGE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_ARRANGE_PARTPLATE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_ORIENT, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_ORIENT_PARTPLATE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_SELECT_CURR_PLATE_ALL, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_SELECT_ALL, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_QUESTION_MARK, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_INCREASE_INSTANCES, Event< int >)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_INSTANCE_MOVED, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_INSTANCE_ROTATED, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_INSTANCE_SCALED, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_FORCE_UPDATE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, Event< bool >)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_UPDATE_GEOMETRY, Vec3dsEvent< 2 >)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_MOUSE_DRAGGING_STARTED, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_TAB, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_RESETGIZMOS, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_UNDO, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_REDO, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_SWITCH_TO_OBJECT, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_SWITCH_TO_GLOBAL, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_COLLAPSE_SIDEBAR, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_RENDER_TIMER, wxTimerEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_TOOLBAR_HIGHLIGHTER_TIMER, wxTimerEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_GIZMO_HIGHLIGHTER_TIMER, wxTimerEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_UPDATE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_CUSTOMEVT_TICKSCHANGED, wxCommandEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE, SimpleEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_ADAPTIVE_LAYER_HEIGHT_PROFILE, Event< float >)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_SMOOTH_LAYER_HEIGHT_PROFILE, HeightProfileSmoothEvent)
 Slic3r::GUI::wxDEFINE_EVENT (EVT_GLCANVAS_PRINTABLE, SimpleEvent)
static bool Slic3r::GUI::construct_error_string (ObjectFilamentResults &object_result, std::string &error_string)
static std::pair< bool, bool > Slic3r::GUI::construct_extruder_unprintable_error (ObjectFilamentResults &object_result, std::string &left_extruder_unprintable_text, std::string &right_extruder_unprintable_text)
static float Slic3r::GUI::canvas_corner_height ()
static bool Slic3r::GUI::key_repeats (int key)
static void Slic3r::GUI::key_released (int key)
static bool Slic3r::GUI::string_getter (const bool is_undo, int idx, const char **out_text)
static bool Slic3r::GUI::search_string_getter (int idx, const char **label, const char **tooltip)
static void Slic3r::GUI::push_plate_toolbar_scrollbar_style (bool is_dark, float scrollbar_size)
static ImVec4 Slic3r::GUI::plate_toolbar_hover_color (bool is_dark)
static bool Slic3r::GUI::plate_toolbar_keeps_scrollbar (bool shown, float scrollbar_size)
const ModelVolume * Slic3r::GUI::get_model_volume (const GLVolume &v, const Model &model)
ModelVolume * Slic3r::GUI::get_model_volume (const ObjectID &volume_id, const ModelObjectPtrs &objects)
ModelVolume * Slic3r::GUI::get_model_volume (const GLVolume &v, const ModelObject &object)
ModelVolume * Slic3r::GUI::get_model_volume (const GLVolume &v, const ModelObjectPtrs &objects)
GLVolume * Slic3r::GUI::get_first_hovered_gl_volume (const GLCanvas3D &canvas)
GLVolume * Slic3r::GUI::get_selected_gl_volume (const GLCanvas3D &canvas)
ModelObject * Slic3r::GUI::get_model_object (const GLVolume &gl_volume, const Model &model)
ModelObject * Slic3r::GUI::get_model_object (const GLVolume &gl_volume, const ModelObjectPtrs &objects)
ModelInstance * Slic3r::GUI::get_model_instance (const GLVolume &gl_volume, const Model &model)
ModelInstance * Slic3r::GUI::get_model_instance (const GLVolume &gl_volume, const ModelObjectPtrs &objects)
ModelInstance * Slic3r::GUI::get_model_instance (const GLVolume &gl_volume, const ModelObject &object)

Variables

static constexpr const float TRACKBALLSIZE = 0.8f
static Slic3r::ColorRGBA DEFAULT_BG_LIGHT_COLOR = { 0.906f, 0.906f, 0.906f, 1.0f }
static Slic3r::ColorRGBA DEFAULT_BG_LIGHT_COLOR_DARK = { 0.329f, 0.329f, 0.353f, 1.0f }
static Slic3r::ColorRGBA ERROR_BG_LIGHT_COLOR = { 0.753f, 0.192f, 0.039f, 1.0f }
static Slic3r::ColorRGBA ERROR_BG_LIGHT_COLOR_DARK = { 0.753f, 0.192f, 0.039f, 1.0f }
wxString Slic3r::GUI::filament_printable_error_msg
static constexpr std::array< double, 4 > Slic3r::GUI::marker_radii { 9., 7., 6., 5. }
static constexpr float Slic3r::GUI::NAVIGATOR_SIZE = 128.f
static constexpr float Slic3r::GUI::CANVAS_TOOLBAR_MARGIN = 10.f
static constexpr float Slic3r::GUI::CANVAS_TOOLBAR_PADDING = 2.f
static constexpr float Slic3r::GUI::CANVAS_TOOLBAR_BUTTON = 36.f
static constexpr float Slic3r::GUI::CANVAS_TOOLBAR_SPACING = 6.f
static std::set< int > Slic3r::GUI::s_keys_down
static const float Slic3r::GUI::cameraProjection [16] = {1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f}
static const Vec3d Slic3r::GUI::STATIC_LIGHT_DIR = Vec3d(-0.4, -0.6, 1.0).normalized()
static constexpr float Slic3r::GUI::PLATE_TOOLBAR_SCROLLBAR = 14.f

Macro Definition Documentation

◆ ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT

#define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT   0

◆ IMGUI_DEFINE_MATH_OPERATORS

#define IMGUI_DEFINE_MATH_OPERATORS

◆ USE_PARALLEL

#define USE_PARALLEL   1

Variable Documentation

◆ DEFAULT_BG_LIGHT_COLOR

Slic3r::ColorRGBA DEFAULT_BG_LIGHT_COLOR = { 0.906f, 0.906f, 0.906f, 1.0f }
static

◆ DEFAULT_BG_LIGHT_COLOR_DARK

Slic3r::ColorRGBA DEFAULT_BG_LIGHT_COLOR_DARK = { 0.329f, 0.329f, 0.353f, 1.0f }
static
195{ 0.329f, 0.329f, 0.353f, 1.0f };

Referenced by Slic3r::GUI::GLCanvas3D::_render_background().

◆ ERROR_BG_LIGHT_COLOR

Slic3r::ColorRGBA ERROR_BG_LIGHT_COLOR = { 0.753f, 0.192f, 0.039f, 1.0f }
static
196{ 0.753f, 0.192f, 0.039f, 1.0f };

Referenced by Slic3r::GUI::GLCanvas3D::_render_background().

◆ ERROR_BG_LIGHT_COLOR_DARK

Slic3r::ColorRGBA ERROR_BG_LIGHT_COLOR_DARK = { 0.753f, 0.192f, 0.039f, 1.0f }
static
197{ 0.753f, 0.192f, 0.039f, 1.0f };

Referenced by Slic3r::GUI::GLCanvas3D::_render_background().

◆ TRACKBALLSIZE

const float TRACKBALLSIZE = 0.8f
staticconstexpr