Revision 84
1.10/trunk/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenPanel.java | ||
---|---|---|
69 | 69 |
import com.iver.core.NotificationDialog; |
70 | 70 |
|
71 | 71 |
public class FullScreenPanel extends GridBagLayoutPanel implements IWindow, |
72 |
ChangeListener, IWindowListener { |
|
72 |
ChangeListener, IWindowListener {
|
|
73 | 73 |
|
74 | 74 |
/** |
75 | 75 |
* |
... | ... | |
206 | 206 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0); |
207 | 207 |
jPanel1.add(wowjCheckBox, gridBagConstraints); |
208 | 208 |
wowjCheckBox.setSelected(false); |
209 |
|
|
209 |
|
|
210 | 210 |
xyzjCheckBox.setText(PluginServices.getText(this, "Activar_XYZ")); |
211 |
xyzjCheckBox.setToolTipText(PluginServices.getText(this, "Activar_XYZ_tooltip")); |
|
211 |
xyzjCheckBox.setToolTipText(PluginServices.getText(this, |
|
212 |
"Activar_XYZ_tooltip")); |
|
212 | 213 |
gridBagConstraints = new java.awt.GridBagConstraints(); |
213 | 214 |
gridBagConstraints.gridx = 0; |
214 | 215 |
gridBagConstraints.gridy = 8; |
... | ... | |
381 | 382 |
|
382 | 383 |
private Compass compass; |
383 | 384 |
|
384 |
|
|
385 |
|
|
386 | 385 |
protected void jButton1ActionPerformed(ActionEvent evt) { |
387 | 386 |
|
388 | 387 |
_view3D = (View3D) PluginServices.getMDIManager().getActiveWindow(); |
... | ... | |
394 | 393 |
changedManipulator = false; |
395 | 394 |
|
396 | 395 |
GraphicsEnvironment ge = GraphicsEnvironment |
397 |
.getLocalGraphicsEnvironment(); |
|
396 |
.getLocalGraphicsEnvironment();
|
|
398 | 397 |
try { |
399 | 398 |
GraphicsDevice[] gs = ge.getScreenDevices(); |
400 |
int screenNum = ((SpinnerNumberModel) jSpinner1 |
|
401 |
.getModel()).getNumber().intValue();
|
|
399 |
int screenNum = ((SpinnerNumberModel) jSpinner1.getModel())
|
|
400 |
.getNumber().intValue(); |
|
402 | 401 |
_numScreens = gs.length; |
403 |
if(_numScreens <= screenNum) screenNum=0; |
|
402 |
if (_numScreens <= screenNum) |
|
403 |
screenNum = 0; |
|
404 | 404 |
_screenWidth = gs[screenNum].getDisplayMode().getWidth(); |
405 | 405 |
_screenHeight = gs[screenNum].getDisplayMode().getHeight(); |
406 |
_logger.debug("Num Screens:"+ _numScreens); |
|
407 |
_logger.debug("Selected Screen:"+ screenNum); |
|
408 |
_logger.debug("Selected Screen Resolution:("+_screenWidth+","+_screenHeight+")"); |
|
406 |
_logger.debug("Num Screens:" + _numScreens); |
|
407 |
_logger.debug("Selected Screen:" + screenNum); |
|
408 |
_logger.debug("Selected Screen Resolution:(" + _screenWidth + "," |
|
409 |
+ _screenHeight + ")"); |
|
409 | 410 |
} catch (HeadlessException e) { |
410 | 411 |
// Is thrown if there are no screen devices |
411 | 412 |
} |
... | ... | |
424 | 425 |
terrain.setTerrainName(planetView3D.getTerrainName()); |
425 | 426 |
|
426 | 427 |
MapContext3D mc = (MapContext3D) _view3D.getMapControl() |
427 |
.getMapContext(); |
|
428 |
.getMapContext();
|
|
428 | 429 |
terrain.init(); |
429 | 430 |
terrain.setLayerManager(mc.getTerrain().getLayerManager()); |
430 | 431 |
viewCam = new Camera(); |
... | ... | |
434 | 435 |
if (synchronize) { |
435 | 436 |
_fullScreenViewer.setFusionDistance((float) terrain |
436 | 437 |
.getZoom()); |
437 |
Matrix refView = _view3D.getCanvas3d().getOSGViewer() |
|
438 |
.getViewMatrix(); |
|
439 |
viewCam.setViewMatrix(refView); |
|
438 |
Matrix refView = _view3D.getCanvas3d().getOSGViewer()
|
|
439 |
.getViewMatrix();
|
|
440 |
viewCam.setViewMatrix(refView);
|
|
440 | 441 |
_fullScreenViewer.setCamera(viewCam); |
441 |
|
|
442 |
|
|
443 | 442 |
} |
444 | 443 |
|
445 | 444 |
super.frame(); |
446 | 445 |
}; |
447 | 446 |
}; |
448 |
|
|
449 |
|
|
450 |
|
|
451 | 447 |
_fullScreenViewer.addTerrain(terrain); |
452 | 448 |
_fullScreenViewer.addFeature((((TerrainViewer) _view3D |
453 | 449 |
.getCanvas3d().getOSGViewer()).getFeatures())); |
... | ... | |
471 | 467 |
_fullScreenViewer.addNodeToCameraHUD(compass); |
472 | 468 |
|
473 | 469 |
Vec4 color = ((TerrainViewer) _view3D.getCanvas3d().getOSGViewer()) |
474 |
.getClearColor(); |
|
470 |
.getClearColor();
|
|
475 | 471 |
_fullScreenViewer.setClearColor(color.x(), color.y(), color.z(), |
476 | 472 |
color.w()); |
477 | 473 |
_fullScreenViewer.setDisplaySettings(_ds); |
478 | 474 |
Matrix refView = _view3D.getCanvas3d().getOSGViewer() |
479 |
.getViewMatrix(); |
|
475 |
.getViewMatrix();
|
|
480 | 476 |
viewCam.setViewMatrix(refView); |
481 | 477 |
_fullScreenViewer.setCamera(viewCam); |
482 | 478 |
|
483 |
|
|
484 |
|
|
485 | 479 |
_canvas3d = ViewerFactory.getInstance().createViewer( |
486 | 480 |
ViewerFactory.VIEWER_TYPE.CANVAS_VIEWER, _fullScreenViewer); |
487 | 481 |
_canvas3d |
488 |
.addKeyListener(new ViewerStateListener(_fullScreenViewer)); |
|
482 |
.addKeyListener(new ViewerStateListener(_fullScreenViewer));
|
|
489 | 483 |
frame = new JDialog(); |
490 | 484 |
JPanel jContentPane = new JPanel(); |
491 | 485 |
jContentPane.setLayout(new BorderLayout()); |
... | ... | |
494 | 488 |
ViewerFactory.getInstance().startAnimator(); |
495 | 489 |
frame.addWindowListener(new WindowAdapter() { |
496 | 490 |
public void windowClosing(WindowEvent e) { |
497 |
if (changedManipulator) { |
|
498 |
((TerrainViewer) (_view3D.getCanvas3d().getOSGViewer())) |
|
499 |
.setCameraManipulator(null); |
|
500 |
} |
|
491 |
/* |
|
492 |
* if (changedManipulator) { ((TerrainViewer) |
|
493 |
* (_view3D.getCanvas3d().getOSGViewer())) |
|
494 |
* .setCameraManipulator(null); } |
|
495 |
*/ |
|
501 | 496 |
|
502 | 497 |
_canvas3d.dispose(); |
503 | 498 |
} |
... | ... | |
556 | 551 |
e1.printStackTrace(); |
557 | 552 |
} |
558 | 553 |
|
559 |
if (_view3D.getCanvas3d().getOSGViewer().getCameraManipulator() == null) {
|
|
560 |
((TerrainViewer) (_view3D.getCanvas3d().getOSGViewer()))
|
|
561 |
.restoreCustomTerrainManipulator();
|
|
562 |
changedManipulator = true;
|
|
563 |
}
|
|
554 |
/*
|
|
555 |
* if (_view3D.getCanvas3d().getOSGViewer().getCameraManipulator() ==
|
|
556 |
* null) { ((TerrainViewer) (_view3D.getCanvas3d().getOSGViewer()))
|
|
557 |
* .restoreCustomTerrainManipulator(); changedManipulator = true; }
|
|
558 |
*/
|
|
564 | 559 |
|
565 | 560 |
if (synchronize) |
566 | 561 |
_fullScreenViewer.setCameraManipulator(null); |
... | ... | |
570 | 565 |
if (wowjCheckBox.isSelected()) { |
571 | 566 |
enableWOWDisplay(); |
572 | 567 |
runViewer(); |
573 |
} |
|
574 |
else if(_ds.getStereoMode()== DisplaySettings.StereoMode.QUAD_BUFFER) { |
|
568 |
} else if (_ds.getStereoMode() == DisplaySettings.StereoMode.QUAD_BUFFER) { |
|
575 | 569 |
enableQUADBUFFERDisplay(); |
576 | 570 |
runViewer(); |
577 |
|
|
578 |
} |
|
579 |
else { |
|
571 |
} else { |
|
580 | 572 |
if (!jCheckBox2.isSelected()) { |
581 |
if(xyzjCheckBox.isSelected()) { |
|
573 |
if (xyzjCheckBox.isSelected()) {
|
|
582 | 574 |
enableXYZDisplay(); |
583 | 575 |
} |
584 | 576 |
frame.setUndecorated(true); |
585 | 577 |
frame.requestFocus(); |
586 |
//Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); |
|
587 |
//frame.setSize(dim.width, dim.height); |
|
588 |
frame.setSize(_screenWidth,_screenHeight); |
|
578 |
// Dimension dim = |
|
579 |
// Toolkit.getDefaultToolkit().getScreenSize(); |
|
580 |
// frame.setSize(dim.width, dim.height); |
|
581 |
frame.setSize(_screenWidth, _screenHeight); |
|
589 | 582 |
frame.setVisible(true); |
590 | 583 |
} |
591 | 584 |
|
592 | 585 |
else { |
593 |
if(xyzjCheckBox.isSelected()) { |
|
586 |
if (xyzjCheckBox.isSelected()) {
|
|
594 | 587 |
enableXYZDisplay(); |
595 | 588 |
} |
596 | 589 |
frame.setUndecorated(true); |
597 | 590 |
frame.requestFocus(); |
598 |
//Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); |
|
599 |
//frame.setSize(dim.width / _numScreens, dim.height); |
|
600 |
frame.setSize(_screenWidth,_screenHeight); |
|
591 |
// Dimension dim = |
|
592 |
// Toolkit.getDefaultToolkit().getScreenSize(); |
|
593 |
// frame.setSize(dim.width / _numScreens, dim.height); |
|
594 |
frame.setSize(_screenWidth, _screenHeight); |
|
601 | 595 |
frame.setLocation(((SpinnerNumberModel) jSpinner1 |
602 | 596 |
.getModel()).getNumber().intValue() |
603 | 597 |
* _screenWidth, 0); |
... | ... | |
614 | 608 |
frame.setSize(((SpinnerNumberModel) jSpinner4.getModel()) |
615 | 609 |
.getNumber().intValue(), |
616 | 610 |
((SpinnerNumberModel) jSpinner5.getModel()).getNumber() |
617 |
.intValue()); |
|
611 |
.intValue());
|
|
618 | 612 |
frame.setLocation((((SpinnerNumberModel) jSpinner1.getModel()) |
619 | 613 |
.getNumber().intValue() * dim.width) |
620 | 614 |
+ ((SpinnerNumberModel) jSpinner2.getModel()) |
621 |
.getNumber().intValue(), |
|
615 |
.getNumber().intValue(),
|
|
622 | 616 |
((SpinnerNumberModel) jSpinner3.getModel()).getNumber() |
623 |
.intValue()); |
|
617 |
.intValue());
|
|
624 | 618 |
frame.setVisible(true); |
625 | 619 |
} else { |
626 | 620 |
|
627 | 621 |
frame.setSize(((SpinnerNumberModel) jSpinner4.getModel()) |
628 | 622 |
.getNumber().intValue(), |
629 | 623 |
((SpinnerNumberModel) jSpinner5.getModel()).getNumber() |
630 |
.intValue()); |
|
624 |
.intValue());
|
|
631 | 625 |
frame.setLocation(((SpinnerNumberModel) jSpinner2.getModel()) |
632 | 626 |
.getNumber().intValue(), |
633 | 627 |
((SpinnerNumberModel) jSpinner3.getModel()).getNumber() |
634 |
.intValue()); |
|
628 |
.intValue());
|
|
635 | 629 |
frame.setVisible(true); |
636 |
|
|
637 | 630 |
} |
638 | 631 |
|
639 | 632 |
} |
640 | 633 |
|
641 | 634 |
compass.setScale(new Vec3(75, 75, 75)); |
642 |
|
|
643 | 635 |
System.gc(); |
644 | 636 |
|
645 | 637 |
} |
... | ... | |
674 | 666 |
// TODO Auto-generated method stub |
675 | 667 |
return WindowInfo.DIALOG_PROFILE; |
676 | 668 |
} |
677 |
|
|
678 |
protected void enableWOWDisplay() |
|
679 |
{ |
|
669 |
|
|
670 |
protected void enableWOWDisplay() { |
|
680 | 671 |
char wow_content = 0x02, wow_factor = 0x40, wow_offset = 0x80; |
681 | 672 |
float wow_Zd = 0.459813f; |
682 | 673 |
float wow_vz = 6.180772f; |
683 | 674 |
float wow_M = -1586.34f; |
684 | 675 |
float wow_C = 127.5f; |
685 |
int screenNum = ((SpinnerNumberModel) jSpinner1 |
|
686 |
.getModel()).getNumber().intValue();
|
|
676 |
int screenNum = ((SpinnerNumberModel) jSpinner1.getModel()).getNumber()
|
|
677 |
.intValue(); |
|
687 | 678 |
|
688 |
_fullScreenViewer.setUpViewForWoWVxDisplay(screenNum, |
|
689 |
wow_content, wow_factor, wow_offset, wow_Zd, wow_vz, |
|
690 |
wow_M, wow_C); |
|
679 |
_fullScreenViewer.setUpViewForWoWVxDisplay(screenNum, wow_content, |
|
680 |
wow_factor, wow_offset, wow_Zd, wow_vz, wow_M, wow_C); |
|
691 | 681 |
} |
692 |
|
|
693 |
protected void enableXYZDisplay() |
|
694 |
{ |
|
695 |
//int screenNum = ((SpinnerNumberModel) jSpinner1 |
|
696 |
// .getModel()).getNumber().intValue(); |
|
697 |
//_fullScreenViewer.setUpViewOnSingleScreen(screenNum); |
|
682 |
|
|
683 |
protected void enableXYZDisplay() { |
|
684 |
// int screenNum = ((SpinnerNumberModel) jSpinner1 |
|
685 |
// .getModel()).getNumber().intValue(); |
|
686 |
// _fullScreenViewer.setUpViewOnSingleScreen(screenNum); |
|
698 | 687 |
Node n = _fullScreenViewer.getSceneData(); |
699 |
Node multiview = osgDB.readNodeFileNoException(String.valueOf(n.getCPtr())+".multiview"); |
|
688 |
Node multiview = osgDB.readNodeFileNoException(String.valueOf(n |
|
689 |
.getCPtr()) |
|
690 |
+ ".multiview"); |
|
700 | 691 |
_fullScreenViewer.setSceneData(multiview); |
701 | 692 |
} |
702 |
|
|
703 |
protected void enableQUADBUFFERDisplay() |
|
704 |
{ |
|
705 |
if(!_fullScreenViewer.setUpViewerWithQuadBuffer(0, 0, _screenWidth, _screenHeight)) |
|
706 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this, "Quadbuffer_error")); |
|
693 |
|
|
694 |
protected void enableQUADBUFFERDisplay() { |
|
695 |
if (!_fullScreenViewer.setUpViewerWithQuadBuffer(0, 0, _screenWidth, |
|
696 |
_screenHeight)) |
|
697 |
JOptionPane.showMessageDialog((Component) PluginServices |
|
698 |
.getMainFrame(), PluginServices.getText(this, |
|
699 |
"Quadbuffer_error")); |
|
707 | 700 |
compass.setPosition(new Vec3(_screenWidth - 70, _screenHeight - 70, 0)); |
708 | 701 |
} |
709 |
|
|
710 |
protected void runViewer() |
|
711 |
{ |
|
702 |
|
|
703 |
protected void runViewer() { |
|
712 | 704 |
final ISlaveComponent slavePainter = new ISlaveComponent() { |
713 | 705 |
|
714 | 706 |
public void repaint() { |
... | ... | |
719 | 711 |
new Thread(new Runnable() { |
720 | 712 |
|
721 | 713 |
public void run() { |
722 |
while(!_fullScreenViewer.done()) { |
|
714 |
while (!_fullScreenViewer.done()) {
|
|
723 | 715 |
try { |
724 | 716 |
Thread.sleep(60); |
725 | 717 |
} catch (InterruptedException e) { |
... | ... | |
728 | 720 |
_view3D.getCanvas3d().removeRenderSlaveComponent(slavePainter); |
729 | 721 |
_fullScreenViewer.dispose(); |
730 | 722 |
} |
731 |
}).start();
|
|
723 |
}).start(); |
|
732 | 724 |
} |
733 | 725 |
} |
Also available in: Unified diff