Changeset 12911
- Timestamp:
- 01/24/12 15:27:17 (16 months ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 2 modified
-
include/osgPresentation/SlideShowConstructor (modified) (2 diffs)
-
src/osgPresentation/SlideShowConstructor.cpp (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osgPresentation/SlideShowConstructor
r12853 r12911 388 388 void layerClickEventOperation(const KeyPosition& keyPos, bool relativeJump=true, int slideNum=0, int layerNum=0); 389 389 390 void addToCurrentLayer(osg::Node* subgraph); 391 390 392 void addBullet(const std::string& bullet, PositionData& positionData, FontData& fontData); 391 393 … … 512 514 osg::ref_ptr<FilePathData> _filePathData; 513 515 516 osg::ref_ptr<osg::Group> _layerToApplyEventCallbackTo; 517 osg::ref_ptr<osgGA::GUIEventHandler> _currentEventCallbackToApply; 518 519 514 520 std::string findFileAndRecordPath(const std::string& filename); 515 521 -
OpenSceneGraph/trunk/src/osgPresentation/SlideShowConstructor.cpp
r12853 r12911 191 191 192 192 _slideBackgroundAsHUD = false; 193 194 _layerToApplyEventCallbackTo = 0; 195 _currentEventCallbackToApply = 0; 193 196 } 194 197 … … 437 440 HUDTransform* hudTransform = new HUDTransform(_hudSettings.get()); 438 441 hudTransform->addChild(background); 439 _currentLayer->addChild(hudTransform);442 addToCurrentLayer(hudTransform); 440 443 } 441 444 else 442 445 { 443 _currentLayer->addChild(background);446 addToCurrentLayer(background); 444 447 } 445 448 } … … 467 470 geode->addDrawable(text); 468 471 469 _currentLayer->addChild(decorateSubgraphForPosition(geode, _titlePositionData));472 addToCurrentLayer(decorateSubgraphForPosition(geode, _titlePositionData)); 470 473 } 471 474 … … 476 479 for(unsigned int i=0;i<_previousLayer->getNumChildren();++i) 477 480 { 478 _currentLayer->addChild(_previousLayer->getChild(i));481 addToCurrentLayer(_previousLayer->getChild(i)); 479 482 } 480 483 } … … 518 521 } 519 522 523 void SlideShowConstructor::addToCurrentLayer(osg::Node* subgraph) 524 { 525 if (!subgraph) return; 526 527 if (!_currentLayer) addLayer(); 528 529 if (_currentEventCallbackToApply.valid()) 530 { 531 if (subgraph->getEventCallback()==0) 532 { 533 if (_layerToApplyEventCallbackTo==0 || _currentLayer==_layerToApplyEventCallbackTo) 534 { 535 OSG_INFO<<"Assigning event callback."<<std::endl; 536 subgraph->setEventCallback(_currentEventCallbackToApply.get()); 537 } 538 else 539 { 540 OSG_INFO<<"Ignoring event callback from previous layer."<<std::endl; 541 } 542 } 543 else 544 { 545 OSG_NOTICE<<"Warning: subgraph already has event callback assigned, cannot add second event callback."<<std::endl; 546 } 547 _currentEventCallbackToApply = 0; 548 } 549 _currentLayer->addChild(subgraph); 550 } 551 520 552 void SlideShowConstructor::layerClickToDoOperation(Operation operation, bool relativeJump, int slideNum, int layerNum) 521 553 { 522 if (!_currentLayer) addLayer(); 523 524 if (_currentLayer.valid()) 525 { 526 if (_previousLayer==_currentLayer) 527 { 528 if (_currentLayer->getNumChildren()>0) 529 { 530 OSG_INFO<<"creating new group within layer"<<std::endl; 531 osg::Group* group = new osg::Group; 532 _currentLayer->addChild(group); 533 _currentLayer = group; 534 } 535 } 536 else 537 { 538 OSG_INFO<<"creating secondary group within layer"<<std::endl; 539 osg::Group* group = new osg::Group; 540 _previousLayer->addChild(group); 541 _currentLayer = group; 542 } 543 _currentLayer->setEventCallback(new PickEventHandler(operation, relativeJump, slideNum, layerNum)); 544 } 545 554 _layerToApplyEventCallbackTo = _currentLayer; 555 _currentEventCallbackToApply = new PickEventHandler(operation, relativeJump, slideNum, layerNum); 546 556 } 547 557 548 558 549 559 void SlideShowConstructor::layerClickToDoOperation(const std::string& command, Operation operation, bool relativeJump, int slideNum, int layerNum) 550 { 551 if (!_currentLayer) addLayer(); 552 553 if (_currentLayer.valid()) 554 { 555 if (_previousLayer==_currentLayer) 556 { 557 if (_currentLayer->getNumChildren()>0) 558 { 559 OSG_INFO<<"creating new group within layer"<<std::endl; 560 osg::Group* group = new osg::Group; 561 _currentLayer->addChild(group); 562 _currentLayer = group; 563 } 564 } 565 else 566 { 567 OSG_INFO<<"creating secondary group within layer"<<std::endl; 568 osg::Group* group = new osg::Group; 569 _previousLayer->addChild(group); 570 _currentLayer = group; 571 } 572 _currentLayer->setEventCallback(new PickEventHandler(command, operation, relativeJump, slideNum, layerNum)); 573 } 574 560 { 561 _layerToApplyEventCallbackTo = _currentLayer; 562 _currentEventCallbackToApply = new PickEventHandler(command, operation, relativeJump, slideNum, layerNum); 575 563 } 576 564 … … 578 566 void SlideShowConstructor::layerClickEventOperation(const KeyPosition& keyPos, bool relativeJump, int slideNum, int layerNum) 579 567 { 580 if (!_currentLayer) addLayer(); 581 582 if (_currentLayer.valid()) 583 { 584 if (_previousLayer==_currentLayer) 585 { 586 if (_currentLayer->getNumChildren()>0) 587 { 588 OSG_INFO<<"creating new group within layer"<<std::endl; 589 osg::Group* group = new osg::Group; 590 _currentLayer->addChild(group); 591 _currentLayer = group; 592 } 593 } 594 else 595 { 596 OSG_INFO<<"creating secondary group within layer"<<std::endl; 597 osg::Group* group = new osg::Group; 598 _previousLayer->addChild(group); 599 _currentLayer = group; 600 } 601 _currentLayer->setEventCallback(new PickEventHandler(keyPos, relativeJump, slideNum, layerNum)); 602 } 603 568 _layerToApplyEventCallbackTo = _currentLayer; 569 _currentEventCallbackToApply = new PickEventHandler(keyPos, relativeJump, slideNum, layerNum); 604 570 } 605 571 … … 639 605 void SlideShowConstructor::addBullet(const std::string& bullet, PositionData& positionData, FontData& fontData) 640 606 { 641 if (!_currentLayer) addLayer();642 643 607 osg::Geode* geode = new osg::Geode; 644 608 … … 678 642 geode->addDrawable(text); 679 643 680 _currentLayer->addChild( decorateSubgraphForPosition(geode, positionData) );644 addToCurrentLayer( decorateSubgraphForPosition(geode, positionData) ); 681 645 682 646 bool needToApplyPosition = (_textPositionData.position == positionData.position); … … 689 653 void SlideShowConstructor::addParagraph(const std::string& paragraph, PositionData& positionData, FontData& fontData) 690 654 { 691 if (!_currentLayer) addLayer();692 693 655 osg::Geode* geode = new osg::Geode; 694 656 … … 727 689 geode->addDrawable(text); 728 690 729 _currentLayer->addChild( decorateSubgraphForPosition(geode, positionData) );691 addToCurrentLayer( decorateSubgraphForPosition(geode, positionData) ); 730 692 731 693 bool needToApplyPosition = (_textPositionData.position == positionData.position); … … 878 840 void SlideShowConstructor::addImage(const std::string& filename, const PositionData& positionData, const ImageData& imageData) 879 841 { 880 if (!_currentLayer) addLayer();881 882 842 osg::ref_ptr<osgDB::Options> options = _options; 883 843 if (!imageData.options.empty()) … … 1017 977 } 1018 978 1019 _currentLayer->addChild(subgraph);979 addToCurrentLayer(subgraph); 1020 980 } 1021 981 1022 982 void SlideShowConstructor::addStereoImagePair(const std::string& filenameLeft, const ImageData& imageDataLeft, const std::string& filenameRight, const ImageData& imageDataRight,const PositionData& positionData) 1023 983 { 1024 if (!_currentLayer) addLayer();1025 1026 984 osg::ref_ptr<osgDB::Options> optionsLeft = _options; 1027 985 if (!imageDataLeft.options.empty()) … … 1227 1185 } 1228 1186 1229 _currentLayer->addChild(subgraph);1187 addToCurrentLayer(subgraph); 1230 1188 } 1231 1189 … … 1346 1304 osg::Image* SlideShowConstructor::addInteractiveImage(const std::string& filename, const PositionData& positionData, const ImageData& imageData) 1347 1305 { 1348 if (!_currentLayer) addLayer();1349 1350 1306 osg::ref_ptr<osgDB::Options> options = _options; 1351 1307 if (!imageData.options.empty()) … … 1469 1425 } 1470 1426 1471 _currentLayer->addChild(subgraph);1427 addToCurrentLayer(subgraph); 1472 1428 1473 1429 osgWidget::PdfImage* pdfImage = dynamic_cast<osgWidget::PdfImage*>(image); … … 1724 1680 findImageStreamsAndAddCallbacks(subgraph); 1725 1681 1726 _currentLayer->addChild(subgraph);1682 addToCurrentLayer(subgraph); 1727 1683 } 1728 1684
