def viewFromTop(self):
     self.viewMode = VIEW_TOP
     if self.projectionOrtho == False:
         self.prevRotX = self.camera.rotateX
         self.prevRotY = self.camera.rotateY
         self.projectionOrtho = True
         self.projectionChanged = True
     self.camera.rotateX = mmMath.deg2Rad(-90.0)
     self.camera.rotateY = 0
     self.camera.rotateZ = 0
 def viewFromRight(self):
     self.viewMode = VIEW_RIGHT
     if self.projectionOrtho == False:
         self.prevRotX = self.camera.rotateX
         self.prevRotY = self.camera.rotateY
         self.projectionOrtho = True
         self.projectionChanged = True
     self.camera.rotateX = 0
     self.camera.rotateY = mmMath.deg2Rad(90.0)
     self.camera.rotateZ = 0
 def viewFromTop(self):
     self.viewMode = VIEW_TOP
     if self.projectionOrtho == False:
         self.prevRotX = self.camera.rotateX
         self.prevRotY = self.camera.rotateY
         self.projectionOrtho = True
         self.projectionChanged = True
     self.camera.rotateX = mmMath.deg2Rad(-90.0)
     self.camera.rotateY = 0
     self.camera.rotateZ = 0
 def viewFromRight(self):
     self.viewMode = VIEW_RIGHT
     if self.projectionOrtho == False:
         self.prevRotX = self.camera.rotateX
         self.prevRotY = self.camera.rotateY
         self.projectionOrtho = True
         self.projectionChanged = True
     self.camera.rotateX = 0
     self.camera.rotateY = mmMath.deg2Rad(90.0)
     self.camera.rotateZ = 0
 def __init__(self):
     self.center = numpy.array([0., 0.5, 0.])
     self.rotateY = mmMath.deg2Rad(0.)
     self.rotateX = mmMath.deg2Rad(-15.0)
     #        self.distance = 10.
     self.distance = 3.1
    def handle(self, e):
        #        print yse.Fl_Event.text[e], id(self)
        #        print id(Fl.focus())

        returnVal = 0
        if e == FL_RELEASE:
            self.mouseX = Fl.event_x()
            self.mouseY = Fl.event_y()
            returnVal = 1
        elif e == FL_PUSH:
            self.mouseX = Fl.event_x()
            self.mouseY = Fl.event_y()
            returnVal = 1
        elif e == FL_DRAG:
            self.mouseX = Fl.event_x()
            self.mouseY = Fl.event_y()
            mouseDeltaX = self.mouseX - self.mousePrevX
            mouseDeltaY = self.mouseY - self.mousePrevY

            button = Fl.event_button()
            if button == 1:
                self.camera.rotateY -= mmMath.deg2Rad(mouseDeltaX)
                if self.viewMode == VIEW_PERSPECTIVE:
                    self.camera.rotateX -= mmMath.deg2Rad(mouseDeltaY)
            elif button == 2:
                if self.viewMode != VIEW_TOP:
                    self.camera.center[
                        1] += self.camera.distance * .05 * mouseDeltaY / 12.0
            elif button == 3:
                # right
                self.camera.center[0] -= self.camera.distance * .05 * math.cos(
                    self.camera.rotateY) * mouseDeltaX / 12.0
                self.camera.center[
                    2] -= self.camera.distance * .05 * -math.sin(
                        self.camera.rotateY) * mouseDeltaX / 12.0
                if self.viewMode == VIEW_PERSPECTIVE or self.viewMode == VIEW_TOP:
                    # look
                    self.camera.center[
                        0] -= self.camera.distance * .05 * math.sin(
                            self.camera.rotateY) * mouseDeltaY / 12.0
                    self.camera.center[
                        2] -= self.camera.distance * .05 * math.cos(
                            self.camera.rotateY) * mouseDeltaY / 12.0
            returnVal = 1
            self.redraw()
        elif e == FL_MOUSEWHEEL:
            if self.wheelWork:
                self.camera.distance -= self.camera.distance * .2 * Fl.event_dy(
                ) / 3.0
                #            self.camera.distance -= Fl.event_dy() / 3.0
                if self.camera.distance < 0.0001:
                    self.camera.distance = 0.0001
                self.projectionChanged = True
                returnVal = 1
                self.redraw()

#        elif e == FL_ENTER:
##            Fl.focus(self)
#            returnVal = 1
#        elif e == FL_FOCUS:
#            returnVal = 1
        elif e == FL_KEYUP:
            if Fl.event_key() == ord('1'):
                self.viewFromFront()
            elif Fl.event_key() == ord('2'):
                self.viewFromRight()
            elif Fl.event_key() == ord('3'):
                self.viewFromTop()
            elif Fl.event_key() == ord('4'):
                self.viewPerspective()
            elif Fl.event_key() == ord('6'):
                self.event_handle(1)
            elif Fl.event_key() == ord('7'):
                self.event_handle(2)
            elif Fl.event_key() == ord('8'):
                self.event_handle(3)
            elif Fl.event_key() == ord('9'):
                self.event_handle(4)
            elif Fl.event_key() == ord('0'):
                self.event_handle(5)

#            elif Fl.event_key()==ord('f'):
#                self.event_handle(5)
#            elif Fl.event_key()==ord('g'):
#                self.event_handle(6)
#            elif Fl.event_key()==ord('v'):
#                self.event_handle(7)
#            elif Fl.event_key()==ord('c'):
#                self.event_handle(8)
#            elif Fl.event_key()==ord('d'):
#                self.event_handle(9)

            returnVal = 0
            self.redraw()

        self.mousePrevX = self.mouseX
        self.mousePrevY = self.mouseY

        #        if returnVal == 1:
        #            self.redraw()

        return returnVal
    def __init__(self):
        self.center = numpy.array([0.,0.5,0.])
        self.rotateY = mmMath.deg2Rad(0.)
        self.rotateX = mmMath.deg2Rad(-15.0)
#        self.distance = 10.
        self.distance = 3.1
    def handle(self, e):
#        print yse.Fl_Event.text[e], id(self)
#        print id(Fl.focus())
       
        returnVal = 0
        if e == FL_RELEASE:
            self.mouseX = Fl.event_x()
            self.mouseY = Fl.event_y()
            returnVal = 1
        elif e == FL_PUSH:
            self.mouseX = Fl.event_x()
            self.mouseY = Fl.event_y()
            returnVal = 1
        elif e == FL_DRAG:
            self.mouseX = Fl.event_x()
            self.mouseY = Fl.event_y()
            mouseDeltaX = self.mouseX - self.mousePrevX
            mouseDeltaY = self.mouseY - self.mousePrevY

            button = Fl.event_button()
            if button == 1:
                self.camera.rotateY -= mmMath.deg2Rad(mouseDeltaX)
                if self.viewMode == VIEW_PERSPECTIVE:
                    self.camera.rotateX -= mmMath.deg2Rad(mouseDeltaY)
            elif button == 2:
                if self.viewMode != VIEW_TOP:
                    self.camera.center[1] += self.camera.distance*.05 * mouseDeltaY / 12.0
            elif button == 3:
                # right
                self.camera.center[0] -= self.camera.distance*.05 * math.cos(self.camera.rotateY) * mouseDeltaX / 12.0
                self.camera.center[2] -= self.camera.distance*.05 * -math.sin(self.camera.rotateY) * mouseDeltaX / 12.0
                if self.viewMode == VIEW_PERSPECTIVE or self.viewMode == VIEW_TOP:
                    # look
                    self.camera.center[0] -= self.camera.distance*.05 * math.sin(self.camera.rotateY) * mouseDeltaY / 12.0
                    self.camera.center[2] -= self.camera.distance*.05 * math.cos(self.camera.rotateY) * mouseDeltaY / 12.0
            returnVal = 1
            self.redraw()
        elif e == FL_MOUSEWHEEL:
            if self.wheelWork:
                self.camera.distance -= self.camera.distance*.2 * Fl.event_dy() / 3.0
    #            self.camera.distance -= Fl.event_dy() / 3.0
                if self.camera.distance < 0.0001:
                    self.camera.distance = 0.0001
                self.projectionChanged = True
                returnVal = 1
                self.redraw()
                    
#        elif e == FL_ENTER:
##            Fl.focus(self)
#            returnVal = 1
#        elif e == FL_FOCUS:
#            returnVal = 1
        elif e == FL_KEYUP: 
            if Fl.event_key()==ord('1'):
                self.viewFromFront()
            elif Fl.event_key()==ord('2'):
                self.viewFromRight()
            elif Fl.event_key()==ord('3'):
                self.viewFromTop()
            elif Fl.event_key()==ord('4'):
                self.viewPerspective()
            elif Fl.event_key()==ord('6'):
                self.event_handle(1) 
            elif Fl.event_key()==ord('7'):
                self.event_handle(2)
            elif Fl.event_key()==ord('8'):
                self.event_handle(3) 
            elif Fl.event_key()==ord('9'):
                self.event_handle(4) 
            elif Fl.event_key()==ord('0'):
                self.event_handle(5) 
                
#            elif Fl.event_key()==ord('f'):
#                self.event_handle(5) 
#            elif Fl.event_key()==ord('g'):
#                self.event_handle(6) 
#            elif Fl.event_key()==ord('v'):
#                self.event_handle(7) 
#            elif Fl.event_key()==ord('c'):
#                self.event_handle(8) 
#            elif Fl.event_key()==ord('d'):
#                self.event_handle(9) 

    
            
            returnVal = 0
            self.redraw()

        self.mousePrevX = self.mouseX
        self.mousePrevY = self.mouseY

#        if returnVal == 1:
#            self.redraw()
            
        return returnVal