Commit 47322b03500a166e31d168abf8ba7692b29f37b6
1 parent
245c4e65
Exists in
master
and in
67 other branches
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 | ... | ... |