From 1006abc5b841d06793f35cb4435f0fb6bbebc686 Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Sat, 12 May 2018 19:43:43 -0500 Subject: [PATCH] Cleaned up header for Plate2D.hpp; added comments. --- src/GUI/Plater/Plate2D.hpp | 58 +++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/src/GUI/Plater/Plate2D.hpp b/src/GUI/Plater/Plate2D.hpp index 68e140f04..67bbd4a57 100644 --- a/src/GUI/Plater/Plate2D.hpp +++ b/src/GUI/Plater/Plate2D.hpp @@ -8,23 +8,23 @@ #include #include -#include "Plater.hpp" + #include "ColorScheme.hpp" -#include "Settings.hpp" +#include "Plater.hpp" #include "Plater/PlaterObject.hpp" +#include "Settings.hpp" #include "misc_ui.hpp" #include "Log.hpp" - namespace Slic3r { namespace GUI { - // Setup for an Easter Egg with the canvas text. const wxDateTime today_date {wxDateTime::Now()}; const wxDateTime special_date {13, wxDateTime::Month::Sep, 2006, 0, 0, 0, 0}; const bool today_is_special = {today_date.GetDay() == special_date.GetDay() && today_date.GetMonth() == special_date.GetMonth()}; +/// Enumeration for object nudges. enum class MoveDirection { Up, Down, Left, Right }; @@ -37,20 +37,26 @@ struct InstanceIdx { class Plate2D : public wxPanel { public: - Plate2D(wxWindow* parent, const wxSize& size, std::vector& _objects, std::shared_ptr _model, std::shared_ptr _config, std::shared_ptr _settings); + /// Constructor. Keeps a reference to the main configuration, the model, and the gui settings. + Plate2D(wxWindow* parent, const wxSize& size, std::vector& _objects, std::shared_ptr _model, std::shared_ptr _config, std::shared_ptr _settings); /// Read print bed size from config and calculate the scaled rendition of the bed given the draw canvas. void update_bed_size(); - std::function on_select_object {}; - std::function on_double_click {}; - /// Do something on right-clicks. std::function on_right_click {}; + + /// Do something when right-clicks occur. + std::function on_double_click {}; + + /// Registered function to fire when an instance is moved. std::function on_instances_moved {}; + /// Registered function to fire when objects are selected. + std::function on_select_object {}; + /// Set the selected object instance. void set_selected (long obj, long inst) { this->selected_instance = {obj, inst}; } private: @@ -59,7 +65,7 @@ private: std::shared_ptr config; std::shared_ptr settings; - // Different brushes to draw with, initialized from settings->Color during the constructor + /// Different brushes to draw with, initialized from settings->Color during the constructor wxBrush objects_brush {}; wxBrush instance_brush {}; wxBrush selected_brush {}; @@ -75,8 +81,10 @@ private: bool user_drawn_background {(the_os == OS::Mac ? false : true)}; - /// The object id and selected + /// Object and instance currently selected. InstanceIdx selected_instance {-1, -1}; + + /// Currently dragged object. InstanceIdx drag_object {-1, -1}; /// Handle mouse-move events @@ -85,15 +93,13 @@ private: void mouse_up(wxMouseEvent& e); void mouse_dclick(wxMouseEvent& e); - wxPoint drag_start_pos {wxPoint(-1, -1)}; + wxPoint drag_start_pos {wxPoint(-1, -1)}; //< Start coordinate for object drags + void repaint(wxPaintEvent& e); //< Handle repaint events - /// Handle repaint events - void repaint(wxPaintEvent& e); + void nudge_key(wxKeyEvent& e); //< Handler for wxKeyEvents. - void nudge_key(wxKeyEvent& e); - - void nudge(MoveDirection dir); + void nudge(MoveDirection dir); //< Perform object nudge on plater. /// Set/Update all of the colors used by the various brushes in the panel. void set_colors(); @@ -105,14 +111,13 @@ private: /// For a specific point, unscale it relative to the origin wxPoint unscaled_point_to_pixel(const wxPoint& in); - - /// Displacement needed to center bed. - wxPoint bed_origin {}; - - /// private class variables to stash bits for drawing the print bed area. - wxRealPoint print_center {}; + /// private class variables for drawing the print bed area. Slic3r::Polygon bed_polygon {}; std::vector grid {}; + wxRealPoint print_center {}; + + /// Displacement needed to center bed. + wxPoint bed_origin {}; /// Set up the 2D canvas blank canvas text. /// Easter egg: Sept. 13, 2006. The first part ever printed by a RepRap to make another RepRap. @@ -121,9 +126,12 @@ private: /// How much to scale the points to fit in the draw bounding box area. /// Expressed as pixel / mm double scaling_factor {1.0}; + - const std::string LogChannel {"GUI_2D"}; + const std::string LogChannel {"GUI_2D"}; //< Which logging channel to use for this object. + /// Transform a (X,Y) pair relative to the GUI position of the bed + /// and scale. Returns a Slic3r::Point in scaled units. Slic3r::Point point_to_model_units(coordf_t x, coordf_t y) { const auto& zero {this->bed_origin}; return Slic3r::Point( @@ -131,9 +139,13 @@ private: scale_(zero.y - y) / this->scaling_factor ); } + + /// Overloaded function to accept wxPoint and return scaled and offset Slic3r::Point Slic3r::Point point_to_model_units(const wxPoint& pt) { return this->point_to_model_units(pt.x, pt.y); } + + /// Overloaded function to accept Slic3r::Pointf and return scaled and offset Slic3r::Point Slic3r::Point point_to_model_units(const Pointf& pt) { return this->point_to_model_units(pt.x, pt.y); }