| 75 | } |
| 76 | |
| 77 | void SelectionBox::draw(bool withNames){ |
| 78 | |
| 79 | |
| 80 | // set min/max new from grabbed frame: |
| 81 | for (unsigned i = 0; i < m_frames.size(); ++i){ |
| 82 | if (frame(i)->grabsMouse()){ |
| 83 | qglviewer::Vec f = frame(i)->position(); |
| 84 | |
| 85 | unsigned oi = i+3; |
| 86 | float corr = m_arrowLength/2.0; |
| 87 | if (i >= 3){ |
| 88 | oi = i-3; |
| 89 | corr *= -1; |
| 90 | } |
| 91 | |
| 92 | qglviewer::Vec fo = frame(oi)->position(); |
| 93 | |
| 94 | unsigned ci = i%3; |
| 95 | m_minPt[ci] = std::min(f[ci] - corr, fo[ci] + corr); |
| 96 | m_maxPt[ci] = std::max(f[ci] - corr, fo[ci] + corr); |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | // draw box: |
| 101 | |
| 102 | glEnable(GL_LINE_SMOOTH); |
| 103 | glLineWidth(2.); |
| 104 | glDisable(GL_LIGHTING); |
| 105 | glColor3f(0.9,0.0, 0.0); |
| 106 | glBegin(GL_LINE_LOOP); // Start drawing a line primitive |
| 107 | glVertex3f(m_minPt.x, m_minPt.y, m_minPt.z); |
| 108 | glVertex3f(m_maxPt.x, m_minPt.y, m_minPt.z); |
| 109 | glVertex3f(m_maxPt.x, m_maxPt.y, m_minPt.z); |
| 110 | glVertex3f(m_minPt.x, m_maxPt.y, m_minPt.z); |
| 111 | glEnd(); |
| 112 | |
| 113 | glBegin(GL_LINE_LOOP); |
| 114 | glVertex3f(m_minPt.x, m_minPt.y, m_maxPt.z); |
| 115 | glVertex3f(m_maxPt.x, m_minPt.y, m_maxPt.z); |
| 116 | glVertex3f(m_maxPt.x, m_maxPt.y, m_maxPt.z); |
| 117 | glVertex3f(m_minPt.x, m_maxPt.y, m_maxPt.z); |
| 118 | // glVertex3f(-1.0f, -1.0f, 0.0f); // The bottom left corner |
| 119 | // glVertex3f(-1.0f, 1.0f, 0.0f); // The top left corner |
| 120 | // glVertex3f(1.0f, 1.0f, 0.0f); // The top right corner |
| 121 | // glVertex3f(1.0f, -1.0f, 0.0f); // The bottom right corner |
| 122 | glEnd(); |
| 123 | |
| 124 | glBegin(GL_LINES); |
| 125 | glVertex3f(m_minPt.x, m_minPt.y, m_minPt.z); |
| 126 | glVertex3f(m_minPt.x, m_minPt.y, m_maxPt.z); |
| 127 | |
| 128 | glVertex3f(m_maxPt.x, m_minPt.y, m_minPt.z); |
| 129 | glVertex3f(m_maxPt.x, m_minPt.y, m_maxPt.z); |
| 130 | |
| 131 | glVertex3f(m_maxPt.x, m_maxPt.y, m_minPt.z); |
| 132 | glVertex3f(m_maxPt.x, m_maxPt.y, m_maxPt.z); |
| 133 | |
| 134 | glVertex3f(m_minPt.x, m_maxPt.y, m_minPt.z); |
nothing calls this directly
no test coverage detected