From: daid303 Date: Sun, 24 Mar 2013 10:40:50 +0000 (+0100) Subject: Draw outline of selected object. X-Git-Tag: 13.05~161 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=e290fee2e2d25ffa00194ef07e85e79311bc2ade;p=cura.git Draw outline of selected object. --- diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index b3e41cb0..01dd05c5 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -782,7 +782,7 @@ class PreviewGLCanvas(openglGui.glGuiPanel): glStencilFunc(GL_ALWAYS, 1, 1) glStencilOp(GL_INCR, GL_INCR, GL_INCR) self.drawModel(obj.displayList) - glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP); + glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) glStencilFunc(GL_EQUAL, 0, 1) diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index fd1999c2..0950cb62 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -28,8 +28,8 @@ class anim(object): if self.isDone(): return self._end f = (time.time() - self._startTime) / self._runTime - ts=f*f - tc=f*f*f + ts = f*f + tc = f*f*f f = 6*tc*ts + -15*ts*ts + 10*tc return self._start + (self._end - self._start) * f @@ -232,6 +232,29 @@ void main(void) self._drawMachine() + #Draw the outline of the selected object, on top of everything else except the GUI. + if self._selectedObj is not None: + glClear(GL_STENCIL_BUFFER_BIT) + + glDisable(GL_DEPTH_TEST) + glEnable(GL_STENCIL_TEST) + glStencilFunc(GL_ALWAYS, 1, 1) + glStencilOp(GL_INCR, GL_INCR, GL_INCR) + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) + self._renderObject(self._selectedObj) + + glStencilFunc(GL_EQUAL, 0, 255) + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) + glPolygonMode(GL_FRONT, GL_NONE) + glPolygonMode(GL_BACK, GL_LINE) + glLineWidth(2) + glColor4f(1,1,1,0.5) + self._renderObject(self._selectedObj) + glPolygonMode(GL_BACK, GL_FILL) + glPolygonMode(GL_FRONT, GL_FILL) + glDisable(GL_STENCIL_TEST) + glEnable(GL_DEPTH_TEST) + def _renderObject(self, obj): glPushMatrix() glTranslate(obj.getPosition()[0], obj.getPosition()[1], 0)