3DScene member variables moved to c++

This commit is contained in:
Enrico Turri 2018-06-06 12:36:52 +02:00
parent 2dee4d1a83
commit e79037c44d
10 changed files with 104 additions and 16 deletions

View File

@ -2150,19 +2150,23 @@ use List::Util qw(first min max);
use Slic3r::Geometry qw(scale unscale epsilon); use Slic3r::Geometry qw(scale unscale epsilon);
use Slic3r::Print::State ':steps'; use Slic3r::Print::State ':steps';
__PACKAGE__->mk_accessors(qw( #===================================================================================================================================
color_by #__PACKAGE__->mk_accessors(qw(
select_by # color_by
drag_by # select_by
)); # drag_by
#));
#===================================================================================================================================
sub new { sub new {
my $class = shift; my $class = shift;
my $self = $class->SUPER::new(@_); my $self = $class->SUPER::new(@_);
$self->color_by('volume'); # object | volume #===================================================================================================================================
$self->select_by('object'); # object | volume | instance # $self->color_by('volume'); # object | volume
$self->drag_by('instance'); # object | instance # $self->select_by('object'); # object | volume | instance
# $self->drag_by('instance'); # object | instance
#===================================================================================================================================
return $self; return $self;
} }

View File

@ -22,11 +22,13 @@ sub new {
#============================================================================================================================== #==============================================================================================================================
Slic3r::GUI::_3DScene::enable_picking($self, 1); Slic3r::GUI::_3DScene::enable_picking($self, 1);
Slic3r::GUI::_3DScene::enable_moving($self, 1); Slic3r::GUI::_3DScene::enable_moving($self, 1);
Slic3r::GUI::_3DScene::set_select_by($self, 'object');
Slic3r::GUI::_3DScene::set_drag_by($self, 'instance');
# $self->enable_picking(1); # $self->enable_picking(1);
# $self->enable_moving(1); # $self->enable_moving(1);
# $self->select_by('object');
# $self->drag_by('instance');
#============================================================================================================================== #==============================================================================================================================
$self->select_by('object');
$self->drag_by('instance');
$self->{objects} = $objects; $self->{objects} = $objects;
$self->{model} = $model; $self->{model} = $model;

View File

@ -155,11 +155,7 @@ sub new {
$canvas = $self->{canvas} = Slic3r::GUI::3DScene->new($self); $canvas = $self->{canvas} = Slic3r::GUI::3DScene->new($self);
#============================================================================================================================== #==============================================================================================================================
Slic3r::GUI::_3DScene::enable_picking($canvas, 1); Slic3r::GUI::_3DScene::enable_picking($canvas, 1);
# $canvas->enable_picking(1); Slic3r::GUI::_3DScene::set_select_by($canvas, 'volume');
#==============================================================================================================================
$canvas->select_by('volume');
#==============================================================================================================================
Slic3r::GUI::_3DScene::register_on_select_callback($canvas, sub { Slic3r::GUI::_3DScene::register_on_select_callback($canvas, sub {
my ($volume_idx) = @_; my ($volume_idx) = @_;
# convert scene volume to model object volume # convert scene volume to model object volume
@ -169,6 +165,8 @@ sub new {
Slic3r::GUI::_3DScene::set_auto_bed_shape($canvas); Slic3r::GUI::_3DScene::set_auto_bed_shape($canvas);
Slic3r::GUI::_3DScene::set_axes_length($canvas, 2.0 * max(@{ Slic3r::GUI::_3DScene::get_volumes_bounding_box($canvas)->size })); Slic3r::GUI::_3DScene::set_axes_length($canvas, 2.0 * max(@{ Slic3r::GUI::_3DScene::get_volumes_bounding_box($canvas)->size }));
# $canvas->enable_picking(1);
# $canvas->select_by('volume');
# $canvas->on_select(sub { # $canvas->on_select(sub {
# my ($volume_idx) = @_; # my ($volume_idx) = @_;
# # convert scene volume to model object volume # # convert scene volume to model object volume

View File

@ -1857,6 +1857,21 @@ void _3DScene::set_cutting_plane(wxGLCanvas* canvas, float z, const ExPolygons&
return s_canvas_mgr.set_cutting_plane(canvas, z, polygons); return s_canvas_mgr.set_cutting_plane(canvas, z, polygons);
} }
void _3DScene::set_color_by(wxGLCanvas* canvas, const std::string& value)
{
return s_canvas_mgr.set_color_by(canvas, value);
}
void _3DScene::set_select_by(wxGLCanvas* canvas, const std::string& value)
{
return s_canvas_mgr.set_select_by(canvas, value);
}
void _3DScene::set_drag_by(wxGLCanvas* canvas, const std::string& value)
{
return s_canvas_mgr.set_drag_by(canvas, value);
}
bool _3DScene::is_layers_editing_enabled(wxGLCanvas* canvas) bool _3DScene::is_layers_editing_enabled(wxGLCanvas* canvas)
{ {
return s_canvas_mgr.is_layers_editing_enabled(canvas); return s_canvas_mgr.is_layers_editing_enabled(canvas);

View File

@ -575,6 +575,10 @@ public:
static void set_cutting_plane(wxGLCanvas* canvas, float z, const ExPolygons& polygons); static void set_cutting_plane(wxGLCanvas* canvas, float z, const ExPolygons& polygons);
static void set_color_by(wxGLCanvas* canvas, const std::string& value);
static void set_select_by(wxGLCanvas* canvas, const std::string& value);
static void set_drag_by(wxGLCanvas* canvas, const std::string& value);
static bool is_layers_editing_enabled(wxGLCanvas* canvas); static bool is_layers_editing_enabled(wxGLCanvas* canvas);
static bool is_layers_editing_allowed(wxGLCanvas* canvas); static bool is_layers_editing_allowed(wxGLCanvas* canvas);
static bool is_shader_enabled(wxGLCanvas* canvas); static bool is_shader_enabled(wxGLCanvas* canvas);

View File

@ -1149,6 +1149,21 @@ void GLCanvas3D::set_cutting_plane(float z, const ExPolygons& polygons)
m_cutting_plane.set(z, polygons); m_cutting_plane.set(z, polygons);
} }
void GLCanvas3D::set_color_by(const std::string& value)
{
m_color_by = value;
}
void GLCanvas3D::set_select_by(const std::string& value)
{
m_select_by = value;
}
void GLCanvas3D::set_drag_by(const std::string& value)
{
m_drag_by = value;
}
float GLCanvas3D::get_camera_zoom() const float GLCanvas3D::get_camera_zoom() const
{ {
return m_camera.zoom; return m_camera.zoom;

View File

@ -387,6 +387,10 @@ public:
void set_cutting_plane(float z, const ExPolygons& polygons); void set_cutting_plane(float z, const ExPolygons& polygons);
void set_color_by(const std::string& value);
void set_select_by(const std::string& value);
void set_drag_by(const std::string& value);
float get_camera_zoom() const; float get_camera_zoom() const;
BoundingBoxf3 volumes_bounding_box() const; BoundingBoxf3 volumes_bounding_box() const;

View File

@ -317,6 +317,27 @@ void GLCanvas3DManager::set_cutting_plane(wxGLCanvas* canvas, float z, const ExP
it->second->set_cutting_plane(z, polygons); it->second->set_cutting_plane(z, polygons);
} }
void GLCanvas3DManager::set_color_by(wxGLCanvas* canvas, const std::string& value)
{
CanvasesMap::iterator it = _get_canvas(canvas);
if (it != m_canvases.end())
it->second->set_color_by(value);
}
void GLCanvas3DManager::set_select_by(wxGLCanvas* canvas, const std::string& value)
{
CanvasesMap::iterator it = _get_canvas(canvas);
if (it != m_canvases.end())
it->second->set_select_by(value);
}
void GLCanvas3DManager::set_drag_by(wxGLCanvas* canvas, const std::string& value)
{
CanvasesMap::iterator it = _get_canvas(canvas);
if (it != m_canvases.end())
it->second->set_drag_by(value);
}
bool GLCanvas3DManager::is_layers_editing_enabled(wxGLCanvas* canvas) const bool GLCanvas3DManager::is_layers_editing_enabled(wxGLCanvas* canvas) const
{ {
CanvasesMap::const_iterator it = _get_canvas(canvas); CanvasesMap::const_iterator it = _get_canvas(canvas);

View File

@ -70,6 +70,10 @@ public:
void set_cutting_plane(wxGLCanvas* canvas, float z, const ExPolygons& polygons); void set_cutting_plane(wxGLCanvas* canvas, float z, const ExPolygons& polygons);
void set_color_by(wxGLCanvas* canvas, const std::string& value);
void set_select_by(wxGLCanvas* canvas, const std::string& value);
void set_drag_by(wxGLCanvas* canvas, const std::string& value);
bool is_layers_editing_enabled(wxGLCanvas* canvas) const; bool is_layers_editing_enabled(wxGLCanvas* canvas) const;
bool is_layers_editing_allowed(wxGLCanvas* canvas) const; bool is_layers_editing_allowed(wxGLCanvas* canvas) const;
bool is_shader_enabled(wxGLCanvas* canvas) const; bool is_shader_enabled(wxGLCanvas* canvas) const;

View File

@ -275,6 +275,27 @@ set_cutting_plane(canvas, z, polygons)
CODE: CODE:
_3DScene::set_cutting_plane((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), z, polygons); _3DScene::set_cutting_plane((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), z, polygons);
void
set_color_by(canvas, value)
SV *canvas;
std::string value;
CODE:
_3DScene::set_color_by((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), value);
void
set_select_by(canvas, value)
SV *canvas;
std::string value;
CODE:
_3DScene::set_select_by((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), value);
void
set_drag_by(canvas, value)
SV *canvas;
std::string value;
CODE:
_3DScene::set_drag_by((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), value);
bool bool
is_layers_editing_enabled(canvas) is_layers_editing_enabled(canvas)
SV *canvas; SV *canvas;