Commit 47322b03500a166e31d168abf8ba7692b29f37b6

Authored by Paulo Henrique Junqueira Amorim
1 parent 245c4e65

ENH: Update orientation text slice, if rotated slice

Showing 1 changed file with 173 additions and 5 deletions   Show diff stats
invesalius/data/viewer_slice.py
... ... @@ -428,7 +428,7 @@ class Viewer(wx.Panel):
428 428 orig_orien = 1
429 429 mouse_x, mouse_y = self.interactor.GetLastEventPosition()
430 430 ren = self.interactor.FindPokedRenderer(mouse_x, mouse_y)
431   -
  431 +
432 432 if((self.state == const.STATE_SPIN) and (self.spined_image)):
433 433 self.cam.SetViewUp(const.SLICE_POSITION[orig_orien][0][self.orientation])
434 434 self.interactor.Render()
... ... @@ -443,10 +443,53 @@ class Viewer(wx.Panel):
443 443 ren = self.interactor.FindPokedRenderer(mouse_x, mouse_y)
444 444 cam = ren.GetActiveCamera()
445 445 if (self.left_pressed):
  446 + self.UpdateTextDirection(cam)
446 447 self.spined_image = True
447 448 evt.Spin()
448 449 evt.OnRightButtonDown()
449 450  
  451 +
  452 + def SetLabelImageOrientation(self, cam):
  453 + croll = cam.GetRoll()
  454 + if (self.orientation == 'AXIAL'):
  455 + if (croll >= -2 and croll <= 1):
  456 + print "A, R, P, L"
  457 +
  458 + elif(croll > 1 and croll <= 44):
  459 + print "AL, RA, PR, LP"
  460 +
  461 + elif(croll > 44 and croll <= 88):
  462 + print "LA, AR, RP, PL"
  463 +
  464 + elif(croll > 89 and croll <= 91):
  465 + print "L, A, R, P"
  466 +
  467 + elif(croll > 91 and croll <= 135):
  468 + print "LP, AL, RA, PR"
  469 +
  470 + elif(croll > 135 and croll <= 177):
  471 + print "PL, LA, AR, RP"
  472 +
  473 + elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177):
  474 + print "P, L, A, R"
  475 +
  476 + elif(croll >= -177 and croll <= -133):
  477 + print "PR, LP, AL, RA"
  478 +
  479 + elif(croll >= -132 and croll <= -101):
  480 + print "RP, PL, LA, AR"
  481 +
  482 + elif(croll >= -101 and croll <= -87):
  483 + print "R, P, L, A"
  484 +
  485 + elif(croll >= -86 and croll <= -42):
  486 + print "RA, PR, LP, AL"
  487 +
  488 + elif(croll >= -41 and croll <= -2):
  489 + print "AR, RP, PL, LA"
  490 +
  491 +
  492 +
450 493 def OnSpinClick(self, evt, obj):
451 494 evt.StartSpin()
452 495  
... ... @@ -480,14 +523,14 @@ class Viewer(wx.Panel):
480 523 else:
481 524 values = [_('R'), _('L'), _('T'), _('B')]
482 525  
483   - left_text = vtku.TextZero()
  526 + left_text = self.left_text = vtku.TextZero()
484 527 left_text.ShadowOff()
485 528 left_text.SetColour(colour)
486 529 left_text.SetPosition(const.TEXT_POS_VCENTRE_LEFT)
487 530 left_text.SetVerticalJustificationToCentered()
488 531 left_text.SetValue(values[0])
489 532  
490   - right_text = vtku.TextZero()
  533 + right_text = self.right_text = vtku.TextZero()
491 534 right_text.ShadowOff()
492 535 right_text.SetColour(colour)
493 536 right_text.SetPosition(const.TEXT_POS_VCENTRE_RIGHT_ZERO)
... ... @@ -495,14 +538,14 @@ class Viewer(wx.Panel):
495 538 right_text.SetJustificationToRight()
496 539 right_text.SetValue(values[1])
497 540  
498   - up_text = vtku.TextZero()
  541 + up_text = self.up_text = vtku.TextZero()
499 542 up_text.ShadowOff()
500 543 up_text.SetColour(colour)
501 544 up_text.SetPosition(const.TEXT_POS_HCENTRE_UP)
502 545 up_text.SetJustificationToCentered()
503 546 up_text.SetValue(values[2])
504 547  
505   - down_text = vtku.TextZero()
  548 + down_text = self.down_text = vtku.TextZero()
506 549 down_text.ShadowOff()
507 550 down_text.SetColour(colour)
508 551 down_text.SetPosition(const.TEXT_POS_HCENTRE_DOWN_ZERO)
... ... @@ -520,6 +563,131 @@ class Viewer(wx.Panel):
520 563 self.slice_data.renderer.AddActor(up_text.actor)
521 564 self.slice_data.renderer.AddActor(down_text.actor)
522 565  
  566 + def RenderTextDirection(self, directions):
  567 + self.up_text.SetValue(directions[0])
  568 + self.right_text.SetValue(directions[3])
  569 + self.down_text.SetValue(directions[2])
  570 + self.left_text.SetValue(directions[1])
  571 + self.interactor.Render()
  572 +
  573 +
  574 + def UpdateTextDirection(self, cam):
  575 + croll = cam.GetRoll()
  576 + if (self.orientation == 'AXIAL'):
  577 +
  578 + if (croll >= -2 and croll <= 1):
  579 + self.RenderTextDirection(["A", "R", "P", "L"])
  580 +
  581 + elif(croll > 1 and croll <= 44):
  582 + self.RenderTextDirection(["AL", "RA", "PR", "LP"])
  583 +
  584 + elif(croll > 44 and croll <= 88):
  585 + self.RenderTextDirection(["LA", "AR", "RP", "PL"])
  586 +
  587 + elif(croll > 89 and croll <= 91):
  588 + self.RenderTextDirection(["L", "A", "R", "P"])
  589 +
  590 + elif(croll > 91 and croll <= 135):
  591 + self.RenderTextDirection(["LP", "AL", "RA", "PR"])
  592 +
  593 + elif(croll > 135 and croll <= 177):
  594 + self.RenderTextDirection(["PL", "LA", "AR", "RP"])
  595 +
  596 + elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177):
  597 + self.RenderTextDirection(["P", "L", "A", "R"])
  598 +
  599 + elif(croll >= -177 and croll <= -133):
  600 + self.RenderTextDirection(["PR", "LP", "AL", "RA"])
  601 +
  602 + elif(croll >= -132 and croll <= -101):
  603 + self.RenderTextDirection(["RP", "PL", "LA", "AR"])
  604 +
  605 + elif(croll >= -101 and croll <= -87):
  606 + self.RenderTextDirection(["R", "P", "L", "A"])
  607 +
  608 + elif(croll >= -86 and croll <= -42):
  609 + self.RenderTextDirection(["RA", "PR", "LP", "AL"])
  610 +
  611 + elif(croll >= -41 and croll <= -2):
  612 + self.RenderTextDirection(["AR", "RP", "PL", "LA"])
  613 +
  614 + elif(self.orientation == "CORONAL"):
  615 +
  616 + if (croll >= -2 and croll <= 1):
  617 + self.RenderTextDirection(["S", "R", "I", "L"])
  618 +
  619 + elif(croll > 1 and croll <= 44):
  620 + self.RenderTextDirection(["SL", "RS", "IR", "LI"])
  621 +
  622 + elif(croll > 44 and croll <= 88):
  623 + self.RenderTextDirection(["LS", "SR", "RI", "L"])
  624 +
  625 + elif(croll > 89 and croll <= 91):
  626 + self.RenderTextDirection(["L", "S", "R", "I"])
  627 +
  628 + elif(croll > 91 and croll <= 135):
  629 + self.RenderTextDirection(["LI", "SL", "RS", "IR"])
  630 +
  631 + elif(croll > 135 and croll <= 177):
  632 + self.RenderTextDirection(["IL", "LS", "SR", "RI"])
  633 +
  634 + elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177):
  635 + self.RenderTextDirection(["I", "L", "S", "R"])
  636 +
  637 + elif(croll >= -177 and croll <= -133):
  638 + self.RenderTextDirection(["IR", "LI", "SL", "RS"])
  639 +
  640 + elif(croll >= -132 and croll <= -101):
  641 + self.RenderTextDirection(["RI", "IL", "LS", "SR"])
  642 +
  643 + elif(croll >= -101 and croll <= -87):
  644 + self.RenderTextDirection(["R", "I", "L", "S"])
  645 +
  646 + elif(croll >= -86 and croll <= -42):
  647 + self.RenderTextDirection(["RS", "IR", "LI", "SL"])
  648 +
  649 + elif(croll >= -41 and croll <= -2):
  650 + self.RenderTextDirection(["SR", "RI", "IL", "LS"])
  651 +
  652 + elif(self.orientation == "SAGITAL"):
  653 +
  654 + if (croll >= -2 and croll <= 1):
  655 + self.RenderTextDirection(["A", "S", "P", "I"])
  656 +
  657 + elif(croll > 1 and croll <= 44):
  658 + self.RenderTextDirection(["AI", "SA", "PS", "IP"])
  659 +
  660 + elif(croll > 44 and croll <= 88):
  661 + self.RenderTextDirection(["IA", "AS", "SP", "PI"])
  662 +
  663 + elif(croll > 89 and croll <= 91):
  664 + self.RenderTextDirection(["I", "A", "S", "P"])
  665 +
  666 + elif(croll > 91 and croll <= 135):
  667 + self.RenderTextDirection(["IP", "AI", "SA", "PS"])
  668 +
  669 + elif(croll > 135 and croll <= 177):
  670 + self.RenderTextDirection(["PI", "IA", "AS", "SP"])
  671 +
  672 + elif(croll >= -180 and croll <= -178) or (croll < 180 and croll > 177):
  673 + self.RenderTextDirection(["P", "I", "A", "S"])
  674 +
  675 + elif(croll >= -177 and croll <= -133):
  676 + self.RenderTextDirection(["PS", "IP", "AI", "SA"])
  677 +
  678 + elif(croll >= -132 and croll <= -101):
  679 + self.RenderTextDirection(["SP", "PI", "IA", "AS"])
  680 +
  681 + elif(croll >= -101 and croll <= -87):
  682 + self.RenderTextDirection(["S", "P", "I", "A"])
  683 +
  684 + elif(croll >= -86 and croll <= -42):
  685 + self.RenderTextDirection(["SA", "PS", "IP", "AI"])
  686 +
  687 + elif(croll >= -41 and croll <= -2):
  688 + self.RenderTextDirection(["AS", "SP", "PI", "IA"])
  689 +
  690 +
523 691 def Reposition(self, slice_data):
524 692 """
525 693 Based on code of method Zoom in the
... ...