Пример #1
0
bool windowMouseOver(osgWidget::Event& event) {
	osgWidget::XYCoord xy = event.getWindow()->localXY(event.x, event.y);

	// osgWidget::warn() << "WINDOW " << xy.x() << " - " << xy.y() << std::endl;

	return true;
}
Пример #2
0
bool changeTheme(osgWidget::Event& ev) {
    std::string theme;

    if(ev.key == osgGA::GUIEventAdapter::KEY_Right)
        theme = "osgWidget/theme-1.png"
    ;

    else if(ev.key == osgGA::GUIEventAdapter::KEY_Left)
        theme = "osgWidget/theme-2.png"
    ;

    else return false;

    osgWidget::Frame* frame = dynamic_cast<osgWidget::Frame*>(ev.getWindow());

    if(!frame) return false;

    // This is just one way to access all our Widgets; we could just as well have used:
    //
    // for(osgWidget::Frame::Iterator i = frame.begin(); i != frame.end() i++) {}
    //
    // ...and it have worked, too.
    for(unsigned int row = 0; row < 3; row++) {
        for(unsigned int col = 0; col < 3; col++) {
            frame->getByRowCol(row, col)->setImage(theme);
        }
    }

    return true;
}
Пример #3
0
// NOTE: THIS IS JUST A TEMPORARY HACK! :) This functionality will all eventually be
// encapsulate into another class in osgWidget proper.
bool scrollWindow(osgWidget::Event& ev) {
    // The first thing we need to do is make sure we have a Frame object...
    osgWidget::Frame* frame = dynamic_cast<osgWidget::Frame*>(ev.getWindow());

    if(!frame) return false;

    // And now we need to make sure our Frame has a valid internal EmbeddedWindow widget.
    osgWidget::Window::EmbeddedWindow* ew =
        dynamic_cast<osgWidget::Window::EmbeddedWindow*>(frame->getEmbeddedWindow())
    ;
        
    if(!ew) return false;
    
    // Lets get the visible area so that we can use it to make sure our scrolling action
    // is necessary in the first place.
    const osgWidget::Quad& va = ew->getWindow()->getVisibleArea();

    // The user wants to scroll up; make sure that the visible area's Y origin isn't already
    // at 0.0f, 0.0f.
    if(ev.getWindowManager()->isMouseScrollingUp() && va[1] != 0.0f)
        ew->getWindow()->addVisibleArea(0, -20)
    ;
    
    else if(va[1] <= (ew->getWindow()->getHeight() - ew->getHeight()))
        ew->getWindow()->addVisibleArea(0, 20)
    ;

    // We need to manually call update to make sure the visible area scissoring is done
    // properly.
    frame->update();

    return true;
}
Пример #4
0
// Here we create (and later demonstrate) the use of a simple function callback.
bool windowClicked(osgWidget::Event& ev) {
    std::cout << "windowClicked: " << ev.getWindow()->getName() << std::endl;

    if(ev.getData()) {
        std::string* s = static_cast<std::string*>(ev.getData());

        std::cout << "This is data attached to the event: " << *s << std::endl;
    }

    return true;
}
    bool windowClicked(osgWidget::Event &ev)
    {
        std::cout << "Object::windowClicked " << ev.getWindow()->getName() << std::endl;

        return true;
    }
Пример #6
0
// TODO: Testing our _parent/EmbeddedWindow stuff.
bool info(osgWidget::Event& ev) {
    osgWidget::warn() << "MousePush @ Window: " << ev.getWindow()->getName() << std::endl;

    return true;
}