| 19 | | // And now we need to make sure our Frame has a valid internal EmbeddedWindow widget. |
| 20 | | osgWidget::Window::EmbeddedWindow* ew = |
| 21 | | dynamic_cast<osgWidget::Window::EmbeddedWindow*>(frame->getEmbeddedWindow()) |
| 22 | | ; |
| 23 | | |
| 24 | | if(!ew) return false; |
| 25 | | |
| 26 | | // Lets get the visible area so that we can use it to make sure our scrolling action |
| 27 | | // is necessary in the first place. |
| 28 | | const osgWidget::Quad& va = ew->getWindow()->getVisibleArea(); |
| | 19 | // And now we need to make sure our Frame has a valid internal EmbeddedWindow widget. |
| | 20 | osgWidget::Window::EmbeddedWindow* ew = |
| | 21 | dynamic_cast<osgWidget::Window::EmbeddedWindow*>(frame->getEmbeddedWindow()) |
| | 22 | ; |
| | 23 | |
| | 24 | if(!ew) return false; |
| | 25 | |
| | 26 | // Lets get the visible area so that we can use it to make sure our scrolling action |
| | 27 | // is necessary in the first place. |
| | 28 | const osgWidget::Quad& va = ew->getWindow()->getVisibleArea(); |
| 30 | | // The user wants to scroll up; make sure that the visible area's Y origin isn't already |
| 31 | | // at 0.0f, 0.0f. |
| 32 | | if(ev.getWindowManager()->isMouseScrollingUp() && va[1] != 0.0f) |
| 33 | | ew->getWindow()->addVisibleArea(0, -20) |
| 34 | | ; |
| 35 | | |
| 36 | | else if(va[1] <= (ew->getWindow()->getHeight() - ew->getHeight())) |
| 37 | | ew->getWindow()->addVisibleArea(0, 20) |
| 38 | | ; |
| | 30 | // The user wants to scroll up; make sure that the visible area's Y origin isn't already |
| | 31 | // at 0.0f, 0.0f. |
| | 32 | if(ev.getWindowManager()->isMouseScrollingUp() && va[1] != 0.0f) |
| | 33 | ew->getWindow()->addVisibleArea(0, -20) |
| | 34 | ; |
| | 35 | |
| | 36 | else if(va[1] <= (ew->getWindow()->getHeight() - ew->getHeight())) |
| | 37 | ew->getWindow()->addVisibleArea(0, 20) |
| | 38 | ; |
| 64 | | // This is just one way to access all our Widgets; we could just as well have used: |
| 65 | | // |
| 66 | | // for(osgWidget::Frame::Iterator i = frame.begin(); i != frame.end() i++) {} |
| 67 | | // |
| 68 | | // ...and it have worked, too. |
| 69 | | for(unsigned int row = 0; row < 3; row++) { |
| 70 | | for(unsigned int col = 0; col < 3; col++) { |
| 71 | | frame->getByRowCol(row, col)->setImage(theme); |
| 72 | | } |
| 73 | | } |
| | 64 | // This is just one way to access all our Widgets; we could just as well have used: |
| | 65 | // |
| | 66 | // for(osgWidget::Frame::Iterator i = frame.begin(); i != frame.end() i++) {} |
| | 67 | // |
| | 68 | // ...and it have worked, too. |
| | 69 | for(unsigned int row = 0; row < 3; row++) { |
| | 70 | for(unsigned int col = 0; col < 3; col++) { |
| | 71 | frame->getByRowCol(row, col)->setImage(theme); |
| | 72 | } |
| | 73 | } |
| 81 | | osgWidget::WindowManager* wm = new osgWidget::WindowManager( |
| 82 | | &viewer, |
| 83 | | 1280.0f, |
| 84 | | 1024.0f, |
| 85 | | MASK_2D, |
| 86 | | osgWidget::WindowManager::WM_PICK_DEBUG |
| 87 | | ); |
| 88 | | |
| 89 | | osgWidget::Frame* frame = osgWidget::Frame::createSimpleFrameWithSingleTexture( |
| 90 | | "frame", |
| 91 | | "../examples/osgwidgetscrolled/theme-2.png", |
| 92 | | 64.0f, |
| 93 | | 64.0f, |
| 94 | | 16.0f, |
| 95 | | 16.0f, |
| 96 | | 100.0f, |
| 97 | | 100.0f |
| 98 | | ); |
| | 81 | osgWidget::WindowManager* wm = new osgWidget::WindowManager( |
| | 82 | &viewer, |
| | 83 | 1280.0f, |
| | 84 | 1024.0f, |
| | 85 | MASK_2D, |
| | 86 | osgWidget::WindowManager::WM_PICK_DEBUG |
| | 87 | ); |
| | 88 | |
| | 89 | osgWidget::Frame* frame = osgWidget::Frame::createSimpleFrameWithSingleTexture( |
| | 90 | "frame", |
| | 91 | "../examples/osgwidgetscrolled/theme-2.png", |
| | 92 | 64.0f, |
| | 93 | 64.0f, |
| | 94 | 16.0f, |
| | 95 | 16.0f, |
| | 96 | 100.0f, |
| | 97 | 100.0f |
| | 98 | ); |
| 102 | | // This is our Transformers box. :) |
| 103 | | osgWidget::Box* box = new osgWidget::Box("images", osgWidget::Box::VERTICAL); |
| 104 | | osgWidget::Widget* img1 = new osgWidget::Widget("im1", 256.0f, 256.0f); |
| 105 | | osgWidget::Widget* img2 = new osgWidget::Widget("im2", 256.0f, 256.0f); |
| 106 | | osgWidget::Widget* img3 = new osgWidget::Widget("im3", 256.0f, 256.0f); |
| 107 | | osgWidget::Widget* img4 = new osgWidget::Widget("im4", 256.0f, 256.0f); |
| | 102 | // This is our Transformers box. :) |
| | 103 | osgWidget::Box* box = new osgWidget::Box("images", osgWidget::Box::VERTICAL); |
| | 104 | osgWidget::Widget* img1 = new osgWidget::Widget("im1", 256.0f, 256.0f); |
| | 105 | osgWidget::Widget* img2 = new osgWidget::Widget("im2", 256.0f, 256.0f); |
| | 106 | osgWidget::Widget* img3 = new osgWidget::Widget("im3", 256.0f, 256.0f); |
| | 107 | osgWidget::Widget* img4 = new osgWidget::Widget("im4", 256.0f, 256.0f); |
| 109 | | img1->setImage("../examples/osgwidgetscrolled/images/starscream.jpg", true); |
| 110 | | img2->setImage("../examples/osgwidgetscrolled/images/optimus.jpg", true); |
| 111 | | img3->setImage("../examples/osgwidgetscrolled/images/megatron.jpg", true); |
| 112 | | img4->setImage("../examples/osgwidgetscrolled/images/bumblebee.jpg", true); |
| | 109 | img1->setImage("../examples/osgwidgetscrolled/images/starscream.jpg", true); |
| | 110 | img2->setImage("../examples/osgwidgetscrolled/images/optimus.jpg", true); |
| | 111 | img3->setImage("../examples/osgwidgetscrolled/images/megatron.jpg", true); |
| | 112 | img4->setImage("../examples/osgwidgetscrolled/images/bumblebee.jpg", true); |
| 114 | | img1->setMinimumSize(10.0f, 10.0f); |
| 115 | | img2->setMinimumSize(10.0f, 10.0f); |
| 116 | | img3->setMinimumSize(10.0f, 10.0f); |
| 117 | | img4->setMinimumSize(10.0f, 10.0f); |
| | 114 | img1->setMinimumSize(10.0f, 10.0f); |
| | 115 | img2->setMinimumSize(10.0f, 10.0f); |
| | 116 | img3->setMinimumSize(10.0f, 10.0f); |
| | 117 | img4->setMinimumSize(10.0f, 10.0f); |
| 125 | | frame->getEmbeddedWindow()->setWindow(box); |
| 126 | | frame->getEmbeddedWindow()->setColor(1.0f, 1.0f, 1.0f, 1.0f); |
| 127 | | frame->resize(300.0f, 300.0f); |
| 128 | | frame->addCallback(osgWidget::Callback(&scrollWindow, osgWidget::EVENT_MOUSE_SCROLL)); |
| 129 | | frame->addCallback(osgWidget::Callback(&changeTheme, osgWidget::EVENT_KEY_DOWN)); |
| | 125 | frame->getEmbeddedWindow()->setWindow(box); |
| | 126 | frame->getEmbeddedWindow()->setColor(1.0f, 1.0f, 1.0f, 1.0f); |
| | 127 | frame->resize(300.0f, 300.0f); |
| | 128 | frame->addCallback(osgWidget::Callback(&scrollWindow, osgWidget::EVENT_MOUSE_SCROLL)); |
| | 129 | frame->addCallback(osgWidget::Callback(&changeTheme, osgWidget::EVENT_KEY_DOWN)); |