Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'xs/src/slic3r/GUI/GLGizmo.hpp')
-rw-r--r--xs/src/slic3r/GUI/GLGizmo.hpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/xs/src/slic3r/GUI/GLGizmo.hpp b/xs/src/slic3r/GUI/GLGizmo.hpp
index 8760b1c7d..2430b5af5 100644
--- a/xs/src/slic3r/GUI/GLGizmo.hpp
+++ b/xs/src/slic3r/GUI/GLGizmo.hpp
@@ -22,7 +22,8 @@ class GLGizmoBase
protected:
struct Grabber
{
- static const float HalfSize;
+ static const float SizeFactor;
+ static const float MinHalfSize;
static const float DraggingScaleFactor;
Vec3d center;
@@ -33,11 +34,11 @@ protected:
Grabber();
- void render(bool hover) const;
- void render_for_picking() const { render(color, false); }
+ void render(bool hover, const BoundingBoxf3& box) const;
+ void render_for_picking(const BoundingBoxf3& box) const { render(box, color, false); }
private:
- void render(const float* render_color, bool use_lighting) const;
+ void render(const BoundingBoxf3& box, const float* render_color, bool use_lighting) const;
void render_face(float half_size) const;
};
@@ -109,8 +110,8 @@ protected:
virtual void on_render_for_picking(const BoundingBoxf3& box) const = 0;
float picking_color_component(unsigned int id) const;
- void render_grabbers() const;
- void render_grabbers_for_picking() const;
+ void render_grabbers(const BoundingBoxf3& box) const;
+ void render_grabbers_for_picking(const BoundingBoxf3& box) const;
void set_tooltip(const std::string& tooltip) const;
std::string format(float value, unsigned int decimals) const;
@@ -163,7 +164,7 @@ private:
void render_snap_radii() const;
void render_reference_radius() const;
void render_angle() const;
- void render_grabber() const;
+ void render_grabber(const BoundingBoxf3& box) const;
void transform_to_local() const;
// returns the intersection of the mouse ray with the plane perpendicular to the gizmo axis, in local coordinate
@@ -234,6 +235,7 @@ protected:
class GLGizmoScale3D : public GLGizmoBase
{
static const float Offset;
+ static const Vec3d OffsetVec;
mutable BoundingBoxf3 m_box;
@@ -285,6 +287,7 @@ class GLGizmoMove3D : public GLGizmoBase
Vec3d m_position;
Vec3d m_starting_drag_position;
Vec3d m_starting_box_center;
+ Vec3d m_starting_box_bottom_center;
public:
explicit GLGizmoMove3D(GLCanvas3D& parent);
@@ -300,7 +303,7 @@ protected:
virtual void on_render_for_picking(const BoundingBoxf3& box) const;
private:
- double calc_displacement(unsigned int preferred_plane_id, const Linef3& mouse_ray) const;
+ double calc_projection(Axis axis, unsigned int preferred_plane_id, const Linef3& mouse_ray) const;
};
class GLGizmoFlatten : public GLGizmoBase
@@ -326,7 +329,11 @@ private:
SourceDataSummary m_source_data;
std::vector<PlaneData> m_planes;
+#if ENABLE_MODELINSTANCE_3D_OFFSET
+ Pointf3s m_instances_positions;
+#else
std::vector<Vec2d> m_instances_positions;
+#endif // ENABLE_MODELINSTANCE_3D_OFFSET
Vec3d m_starting_center;
const ModelObject* m_model_object = nullptr;