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/igl/opengl2/TranslateWidget.h')
-rw-r--r--xs/src/igl/opengl2/TranslateWidget.h211
1 files changed, 0 insertions, 211 deletions
diff --git a/xs/src/igl/opengl2/TranslateWidget.h b/xs/src/igl/opengl2/TranslateWidget.h
deleted file mode 100644
index 7ab06e228..000000000
--- a/xs/src/igl/opengl2/TranslateWidget.h
+++ /dev/null
@@ -1,211 +0,0 @@
-// This file is part of libigl, a simple c++ geometry processing library.
-//
-// Copyright (C) 2016 Alec Jacobson <alecjacobson@gmail.com>
-//
-// This Source Code Form is subject to the terms of the Mozilla Public License
-// v. 2.0. If a copy of the MPL was not distributed with this file, You can
-// obtain one at http://mozilla.org/MPL/2.0/.
-#ifndef IGL_OPENGL2_TRANSLATE_WIDGET_H
-#define IGL_OPENGL2_TRANSLATE_WIDGET_H
-#include "../material_colors.h"
-#include <Eigen/Geometry>
-#include <Eigen/Core>
-#include <vector>
-
-namespace igl
-{
- namespace opengl2
- {
- class TranslateWidget
- {
-public:
- // m_pos position of center
- // m_trans translation vector
- // m_down_xy mouse position on down
- // m_drag_xy mouse position on drag
- // m_is_enabled whether enabled
- Eigen::Vector3d m_pos,m_trans,m_down_trans;
- Eigen::Vector2d m_down_xy, m_drag_xy;
- bool m_is_enabled;
- double m_len;
- enum DownType
- {
- DOWN_TYPE_X = 0,
- DOWN_TYPE_Y = 1,
- DOWN_TYPE_Z = 2,
- DOWN_TYPE_CENTER = 3,
- DOWN_TYPE_NONE = 4,
- NUM_DOWN_TYPES = 5
- } m_down_type, m_selected_type;
- inline TranslateWidget(const Eigen::Vector3d & pos = Eigen::Vector3d(0,0,0));
- inline bool down(const int x, const int y);
- inline bool drag(const int x, const int y);
- inline bool up(const int x, const int y);
- inline bool is_down() const;
- inline void draw() const;
-public:
- EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
- };
- }
-}
-
-// Implementation
-#include "project.h"
-#include "unproject.h"
-
-inline igl::opengl2::TranslateWidget::TranslateWidget(
- const Eigen::Vector3d & pos):
- m_pos(pos),
- m_trans(0,0,0),
- m_down_xy(-1,-1),
- m_drag_xy(-1,-1),
- m_is_enabled(true),
- m_len(50),
- m_down_type(DOWN_TYPE_NONE),
- m_selected_type(DOWN_TYPE_NONE)
-{
-}
-
-inline bool igl::opengl2::TranslateWidget::down(const int x, const int y)
-{
- using namespace Eigen;
- using namespace std;
- if(!m_is_enabled)
- {
- return false;
- }
- m_down_trans = m_trans;
- m_down_xy = Vector2d(x,y);
- m_drag_xy = m_down_xy;
- m_down_type = DOWN_TYPE_NONE;
- m_selected_type = DOWN_TYPE_NONE;
- Vector3d ppos = project((m_pos+m_trans).eval());
- const double r = (ppos.head(2) - m_down_xy).norm();
- const double center_thresh = 10;
- if(r < center_thresh)
- {
- m_down_type = DOWN_TYPE_CENTER;
- m_selected_type = m_down_type;
- return true;
- }else if(r < m_len)
- {
- // Might be hit on lines
- }
- return false;
-}
-
-inline bool igl::opengl2::TranslateWidget::drag(const int x, const int y)
-{
- using namespace std;
- using namespace Eigen;
- if(!m_is_enabled)
- {
- return false;
- }
- m_drag_xy = Vector2d(x,y);
- switch(m_down_type)
- {
- case DOWN_TYPE_NONE:
- return false;
- default:
- {
- Vector3d ppos = project((m_pos+m_trans).eval());
- Vector3d drag3(m_drag_xy(0),m_drag_xy(1),ppos(2));
- Vector3d down3(m_down_xy(0),m_down_xy(1),ppos(2));
- m_trans = m_down_trans + unproject(drag3)-unproject(down3);
- return true;
- }
- }
-}
-
-inline bool igl::opengl2::TranslateWidget::up(const int /*x*/, const int /*y*/)
-{
- // even if disabled process up
- m_down_type = DOWN_TYPE_NONE;
- return false;
-}
-
-inline bool igl::opengl2::TranslateWidget::is_down() const
-{
- return m_down_type != DOWN_TYPE_NONE;
-}
-
-inline void igl::opengl2::TranslateWidget::draw() const
-{
- using namespace Eigen;
- using namespace std;
- glPushAttrib(GL_ENABLE_BIT | GL_LIGHTING_BIT | GL_DEPTH_BUFFER_BIT | GL_LINE_BIT);
- glDisable(GL_LIGHTING);
- glDisable(GL_DEPTH_TEST);
- glLineWidth(2.0);
- auto draw_axes = [&]()
- {
- glBegin(GL_LINES);
- glColor3f(1,0,0);
- glVertex3f(0,0,0);
- glVertex3f(1,0,0);
- glColor3f(0,1,0);
- glVertex3f(0,0,0);
- glVertex3f(0,1,0);
- glColor3f(0,0,1);
- glVertex3f(0,0,0);
- glVertex3f(0,0,1);
- glEnd();
- };
- auto draw_cube = []
- {
- glBegin(GL_LINES);
- glVertex3f(-1.0f, 1.0f, 1.0f);
- glVertex3f(1.0f, 1.0f, 1.0f);
- glVertex3f(1.0f, 1.0f, 1.0f);
- glVertex3f(1.0f, -1.0f, 1.0f);
- glVertex3f(1.0f, -1.0f, 1.0f);
- glVertex3f(-1.0f, -1.0f, 1.0f);
- glVertex3f(-1.0f, -1.0f, 1.0f);
- glVertex3f(-1.0f, 1.0f, 1.0f);
- glVertex3f(1.0f, 1.0f, 1.0f);
- glVertex3f(1.0f, 1.0f, -1.0f);
- glVertex3f(1.0f, 1.0f, -1.0f);
- glVertex3f(1.0f, -1.0f, -1.0f);
- glVertex3f(1.0f, -1.0f, -1.0f);
- glVertex3f(1.0f, -1.0f, 1.0f);
- glVertex3f(1.0f, 1.0f, -1.0f);
- glVertex3f(-1.0f, 1.0f, -1.0f);
- glVertex3f(-1.0f, -1.0f, -1.0f);
- glVertex3f(1.0f, -1.0f, -1.0f);
- glVertex3f(-1.0f, -1.0f, -1.0f);
- glVertex3f(-1.0f, 1.0f, -1.0f);
- glVertex3f(-1.0f, 1.0f, -1.0f);
- glVertex3f(-1.0f, 1.0f, 1.0f);
- glVertex3f(-1.0f, -1.0f, 1.0f);
- glVertex3f(-1.0f, -1.0f, -1.0f);
- glEnd();
- };
- glPushMatrix();
- glTranslated( m_pos(0)+m_trans(0), m_pos(1)+m_trans(1), m_pos(2)+m_trans(2));
-
- {
- Vector3d off,ppos,ppos_off,pos_off;
- project((m_pos+m_trans).eval(),ppos);
- ppos_off = ppos;
- ppos_off(0) += m_len;
- unproject(ppos_off,pos_off);
- const double r = (m_pos+m_trans-pos_off).norm();
- glScaled(r,r,r);
- }
-
- draw_axes();
- glScaled(0.05,0.05,0.05);
- if(m_selected_type == DOWN_TYPE_CENTER)
- {
- glColor3fv(MAYA_YELLOW.data());
- }else
- {
- glColor3fv(MAYA_GREY.data());
- }
- draw_cube();
- glPopMatrix();
- glPopAttrib();
-}
-
-#endif