- Timestamp:
- Nov 25, 2008, 5:28:38 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/management/src/G4VisCommandsViewer.cc
r850 r891 488 488 ////////////// /vis/viewer/create /////////////////////////////////////// 489 489 490 G4VisCommandViewerCreate::G4VisCommandViewerCreate (): fId (0) { 490 G4VisCommandViewerCreate::G4VisCommandViewerCreate (): 491 fId (0), 492 NoValue(0x0000), 493 XValue(0x0001), 494 YValue(0x0002), 495 WidthValue(0x0004), 496 HeightValue(0x0008), 497 AllValues(0x000F), 498 XNegative(0x0010), 499 YNegative(0x0020) { 491 500 G4bool omitable; 492 501 fpCommand = new G4UIcommand ("/vis/viewer/create", this); … … 636 645 } 637 646 647 638 648 // Parse windowSizeHintString to extract first field for backwards 639 649 // compatibility... … … 641 651 G4int windowSizeHint; 642 652 size_t i; 653 #ifdef G4DEBUG 654 printf("G4VisCommandViewerCreate::SetNewValue string\n"); 655 #endif 643 656 for (i = 0; i < windowSizeHintString.size(); ++i) { 644 657 char c = windowSizeHintString[i]; 658 #ifdef G4DEBUG 659 printf("%c",c); 660 #endif 645 661 if (c == 'x' || c == 'X' || c == '+' || c == '-') break; 646 662 } 663 #ifdef G4DEBUG 664 printf("\n"); 665 #endif 647 666 if (i != windowSizeHintString.size()) { 648 667 // x or X or + or - found - must be a X-Window-type geometry string... … … 671 690 // manager in the G4VViewer constructor. They have to be held by 672 691 // the vis manager until the viewer is contructed - next line... 692 693 //////// 694 695 int x,y = 0; 696 unsigned int w,h = 9999999; 697 698 int m = ParseGeometry( windowSizeHintString, &x, &y, &w, &h ); 699 // QSize minSize = main_widget->minimumSize(); 700 // QSize maxSize = main_widget->maximumSize(); 701 if ( (m & XValue) == 0 ) 702 x = -1; 703 if ( (m & YValue) == 0 ) 704 y = -2; 705 if ( (m & WidthValue) == 0 ) 706 w = -3; 707 if ( (m & HeightValue) == 0 ) 708 h = -4; 709 // w = QMIN(w,maxSize.width()); 710 // h = QMIN(h,maxSize.height()); 711 // w = QMAX(w,minSize.width()); 712 // h = QMAX(h,minSize.height()); 713 // if ( (m & XNegative) ) { 714 // x = desktop()->width() + x - w; 715 // qt_widget_tlw_gravity = 3; 716 // } 717 // if ( (m & YNegative) ) { 718 // y = desktop()->height() + y - h; 719 // qt_widget_tlw_gravity = (m & XNegative) ? 9 : 7; 720 // } 721 // main_widget->setGeometry( x, y, w, h ); 722 723 #ifdef G4DEBUG 724 printf ("Lecture X:%d Y:%d W:%d H:%d\n",x,y,w,h); 725 //////// 726 #endif 673 727 674 728 // Create viewer. … … 1518 1572 SetViewParameters(currentViewer, vp); 1519 1573 } 1574 1575 /* Keep from : 1576 * ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.0.6.tar.gz/qt-embedded-free-3.0.6/src/kernel/qapplication_qws.cpp 1577 * 1578 * ParseGeometry parses strings of the form 1579 * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where 1580 * width, height, xoffset, and yoffset are unsigned integers. 1581 * Example: "=80x24+300-49" 1582 * The equal sign is optional. 1583 * It returns a bitmask that indicates which of the four values 1584 * were actually found in the string. For each value found, 1585 * the corresponding argument is updated; for each value 1586 * not found, the corresponding argument is left unchanged. 1587 */ 1588 1589 1590 int G4VisCommandViewerCreate::ParseGeometry ( 1591 const char *string, 1592 int *x, 1593 int *y, 1594 unsigned int *width, 1595 unsigned int *height) 1596 { 1597 1598 int mask = NoValue; 1599 register char *strind; 1600 unsigned int tempWidth, tempHeight; 1601 int tempX, tempY; 1602 char *nextCharacter; 1603 if ( (string == NULL) || (*string == '\0')) { 1604 return(mask); 1605 } 1606 if (*string == '=') 1607 string++; /* ignore possible '=' at beg of geometry spec */ 1608 strind = (char *)string; 1609 if (*strind != '+' && *strind != '-' && *strind != 'x') { 1610 tempWidth = ReadInteger(strind, &nextCharacter); 1611 if (strind == nextCharacter) 1612 return (0); 1613 strind = nextCharacter; 1614 mask |= WidthValue; 1615 } 1616 if (*strind == 'x' || *strind == 'X') { 1617 strind++; 1618 tempHeight = ReadInteger(strind, &nextCharacter); 1619 if (strind == nextCharacter) 1620 return (0); 1621 strind = nextCharacter; 1622 mask |= HeightValue; 1623 } 1624 1625 if ((*strind == '+') || (*strind == '-')) { 1626 if (*strind == '-') { 1627 strind++; 1628 tempX = -ReadInteger(strind, &nextCharacter); 1629 if (strind == nextCharacter) 1630 return (0); 1631 strind = nextCharacter; 1632 mask |= XNegative; 1633 1634 } 1635 else 1636 { strind++; 1637 tempX = ReadInteger(strind, &nextCharacter); 1638 if (strind == nextCharacter) 1639 return(0); 1640 strind = nextCharacter; 1641 } 1642 mask |= XValue; 1643 if ((*strind == '+') || (*strind == '-')) { 1644 if (*strind == '-') { 1645 strind++; 1646 tempY = -ReadInteger(strind, &nextCharacter); 1647 if (strind == nextCharacter) 1648 return(0); 1649 strind = nextCharacter; 1650 mask |= YNegative; 1651 } 1652 else 1653 { 1654 strind++; 1655 tempY = ReadInteger(strind, &nextCharacter); 1656 if (strind == nextCharacter) 1657 return(0); 1658 strind = nextCharacter; 1659 } 1660 mask |= YValue; 1661 } 1662 } 1663 /* If strind isn't at the end of the string the it's an invalid 1664 geometry specification. */ 1665 if (*strind != '\0') return (0); 1666 if (mask & XValue) 1667 *x = tempX; 1668 if (mask & YValue) 1669 *y = tempY; 1670 if (mask & WidthValue) 1671 *width = tempWidth; 1672 if (mask & HeightValue) 1673 *height = tempHeight; 1674 return (mask); 1675 } 1676 1677 /* Keep from : 1678 * ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.0.6.tar.gz/qt-embedded-free-3.0.6/src/kernel/qapplication_qws.cpp 1679 * 1680 */ 1681 int G4VisCommandViewerCreate::ReadInteger(char *string, char **NextString) 1682 { 1683 register int Result = 0; 1684 int Sign = 1; 1685 1686 if (*string == '+') 1687 string++; 1688 else if (*string == '-') 1689 { 1690 string++; 1691 Sign = -1; 1692 } 1693 for (; (*string >= '0') && (*string <= '9'); string++) 1694 { 1695 Result = (Result * 10) + (*string - '0'); 1696 } 1697 *NextString = string; 1698 if (Sign >= 0) 1699 return (Result); 1700 else 1701 return (-Result); 1702 }
Note: See TracChangeset
for help on using the changeset viewer.