Changeset 4354


Ignore:
Timestamp:
May 8, 2014, 3:36:24 PM (6 years ago)
Author:
ldelgass
Message:

Set screen number from DISPLAY in geovis

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/geovis/Renderer.cpp

    r4349 r4354  
    6767    _scaleBarUnits(UNITS_METERS)
    6868{
     69    TRACE("Enter");
     70
    6971    _bgColor[0] = 0;
    7072    _bgColor[1] = 0;
     
    247249void Renderer::finalizeViewer() {
    248250    initViewer();
     251    int screen = 0;
     252    const char *displayEnv = getenv("DISPLAY");
     253    if (displayEnv != NULL) {
     254        // 3 parts: host, display, screen
     255        int part = 0;
     256        for (size_t c = 0; c < strlen(displayEnv); c++) {
     257            if (displayEnv[c] == ':') {
     258                part = 1;
     259            } else if (part == 1 && displayEnv[c] == '.') {
     260                part = 2;
     261            } else if (part == 2) {
     262                screen = atoi(&displayEnv[c]);
     263                break;
     264            }
     265        }
     266    }
    249267    if (!_viewer->isRealized()) {
    250268#ifdef USE_OFFSCREEN_RENDERING
     
    294312        _captureCallback = new ScreenCaptureCallback(texture2D);
    295313        _viewer->getCamera()->setFinalDrawCallback(_captureCallback.get());
    296         _viewer->setUpViewInWindow(0, 0, _windowWidth, _windowHeight);
     314        _viewer->setUpViewInWindow(0, 0, _windowWidth, _windowHeight, screen);
    297315#endif
    298316#else
     
    300318        _viewer->getCamera()->setFinalDrawCallback(_captureCallback.get());
    301319        //_viewer->getCamera()->getDisplaySettings()->setDoubleBuffer(false);
    302         _viewer->setUpViewInWindow(0, 0, _windowWidth, _windowHeight);
     320        _viewer->setUpViewInWindow(0, 0, _windowWidth, _windowHeight, screen);
    303321#endif
    304322        _viewer->realize();
     
    16331651    }
    16341652        break;
    1635     case UNITS_US_SURVEY_FEET:
     1653    case UNITS_US_SURVEY_FEET: {
     1654        double feet = meters * 3937.0/1200.0;
     1655        scale = feet / pixelWidth;
     1656        feet = normalizeScaleFeet(feet);
     1657        pixelWidth = feet / scale;
     1658        if (_scaleLabel.valid()) {
     1659            if (feet >= 5280) {
     1660                _scaleLabel->setText(osgEarth::Stringify()
     1661                                     << feet / 5280.0
     1662                                     << " miUS");
     1663             } else {
     1664                _scaleLabel->setText(osgEarth::Stringify()
     1665                                     << feet
     1666                                     << " ftUS");
     1667            }
     1668        }
     1669    }
     1670        break;
    16361671    case UNITS_INTL_FEET: {
    1637         double feet;
    1638         if (_scaleBarUnits == UNITS_US_SURVEY_FEET) {
    1639             feet = meters * 3937.0/1200.0;
    1640         } else {
    1641             feet = 5280.0 * meters / 1609.344;
    1642         }
     1672        double feet = 5280.0 * meters / 1609.344;
    16431673        scale = feet / pixelWidth;
    16441674        feet = normalizeScaleFeet(feet);
Note: See TracChangeset for help on using the changeset viewer.