- Timestamp:
- 12/16/08 21:29:00 (5 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgwidgetcanvas/osgwidgetcanvas.cpp
r9289 r9370 9 9 10 10 bool colorWidgetEnter(osgWidget::Event& event) { 11 event.getWidget()->addColor(0.5f, 0.2f, 0.3f, 0.0f);11 event.getWidget()->addColor(0.5f, 0.2f, 0.3f, 0.0f); 12 12 13 // osgWidget::warn() << "WIDGET mouseEnter " << event.getWidget()->getName() << std::endl;14 15 return false;13 // osgWidget::warn() << "WIDGET mouseEnter " << event.getWidget()->getName() << std::endl; 14 15 return false; 16 16 } 17 17 18 18 bool colorWidgetLeave(osgWidget::Event& event) { 19 event.getWidget()->addColor(-0.5f, -0.2f, -0.3f, 0.0f);19 event.getWidget()->addColor(-0.5f, -0.2f, -0.3f, 0.0f); 20 20 21 // osgWidget::warn() << "WIDGET mouseLeave" << std::endl;22 23 return true;21 // osgWidget::warn() << "WIDGET mouseLeave" << std::endl; 22 23 return true; 24 24 } 25 25 26 26 bool windowMouseOver(osgWidget::Event& event) { 27 osgWidget::XYCoord xy = event.getWindow()->localXY(event.x, event.y);27 osgWidget::XYCoord xy = event.getWindow()->localXY(event.x, event.y); 28 28 29 // osgWidget::warn() << "WINDOW " << xy.x() << " - " << xy.y() << std::endl;29 // osgWidget::warn() << "WINDOW " << xy.x() << " - " << xy.y() << std::endl; 30 30 31 return true;31 return true; 32 32 } 33 33 34 34 bool widgetMouseOver(osgWidget::Event& event) { 35 osgWidget::XYCoord xy = event.getWidget()->localXY(event.x, event.y);35 osgWidget::XYCoord xy = event.getWidget()->localXY(event.x, event.y); 36 36 37 // osgWidget::warn() << "WIDGET mouseOver " << xy.x() << " - " << xy.y() << std::endl;37 // osgWidget::warn() << "WIDGET mouseOver " << xy.x() << " - " << xy.y() << std::endl; 38 38 39 return true;39 return true; 40 40 } 41 41 42 42 osgWidget::Widget* createWidget( 43 const std::string& name,44 osgWidget::color_type col,45 osgWidget::Widget::Layer layer43 const std::string& name, 44 osgWidget::color_type col, 45 osgWidget::Widget::Layer layer 46 46 ) { 47 osgWidget::Widget* widget = new osgWidget::Widget(name, 200.0f, 200.0f);47 osgWidget::Widget* widget = new osgWidget::Widget(name, 200.0f, 200.0f); 48 48 49 widget->setEventMask(osgWidget::EVENT_ALL);50 widget->addCallback(new osgWidget::Callback(&colorWidgetEnter, osgWidget::EVENT_MOUSE_PUSH));51 widget->addCallback(new osgWidget::Callback(&colorWidgetLeave, osgWidget::EVENT_MOUSE_RELEASE));52 widget->addCallback(new osgWidget::Callback(&colorWidgetEnter, osgWidget::EVENT_MOUSE_ENTER));53 widget->addCallback(new osgWidget::Callback(&colorWidgetLeave, osgWidget::EVENT_MOUSE_LEAVE));54 widget->addCallback(new osgWidget::Callback(&widgetMouseOver, osgWidget::EVENT_MOUSE_OVER));55 widget->setColor(col, col, col, 0.5f);56 widget->setLayer(layer);57 58 return widget;49 widget->setEventMask(osgWidget::EVENT_ALL); 50 widget->addCallback(new osgWidget::Callback(&colorWidgetEnter, osgWidget::EVENT_MOUSE_PUSH)); 51 widget->addCallback(new osgWidget::Callback(&colorWidgetLeave, osgWidget::EVENT_MOUSE_RELEASE)); 52 widget->addCallback(new osgWidget::Callback(&colorWidgetEnter, osgWidget::EVENT_MOUSE_ENTER)); 53 widget->addCallback(new osgWidget::Callback(&colorWidgetLeave, osgWidget::EVENT_MOUSE_LEAVE)); 54 widget->addCallback(new osgWidget::Callback(&widgetMouseOver, osgWidget::EVENT_MOUSE_OVER)); 55 widget->setColor(col, col, col, 0.5f); 56 widget->setLayer(layer); 57 58 return widget; 59 59 } 60 60 61 61 int main(int argc, char** argv) { 62 osgViewer::Viewer viewer;62 osgViewer::Viewer viewer; 63 63 64 osgWidget::WindowManager* wm = new osgWidget::WindowManager(65 &viewer,66 1280.0f,67 1024.0f,68 MASK_2D,69 osgWidget::WindowManager::WM_PICK_DEBUG70 );71 72 osgWidget::Canvas* canvas = new osgWidget::Canvas("canvas");64 osgWidget::WindowManager* wm = new osgWidget::WindowManager( 65 &viewer, 66 1280.0f, 67 1024.0f, 68 MASK_2D, 69 osgWidget::WindowManager::WM_PICK_DEBUG 70 ); 71 72 osgWidget::Canvas* canvas = new osgWidget::Canvas("canvas"); 73 73 74 canvas->addCallback(new osgWidget::Callback(&windowMouseOver, osgWidget::EVENT_MOUSE_OVER));75 canvas->attachMoveCallback();76 canvas->attachRotateCallback();77 canvas->attachScaleCallback();74 canvas->addCallback(new osgWidget::Callback(&windowMouseOver, osgWidget::EVENT_MOUSE_OVER)); 75 canvas->attachMoveCallback(); 76 canvas->attachRotateCallback(); 77 canvas->attachScaleCallback(); 78 78 79 canvas->addWidget(80 createWidget("w1", 0.2f, osgWidget::Widget::LAYER_LOW),81 0.0f,82 0.0f83 );84 85 canvas->addWidget(86 createWidget("w2", 0.4f, osgWidget::Widget::LAYER_MIDDLE),87 200.0f,88 0.0f89 );79 canvas->addWidget( 80 createWidget("w1", 0.2f, osgWidget::Widget::LAYER_LOW), 81 0.0f, 82 0.0f 83 ); 84 85 canvas->addWidget( 86 createWidget("w2", 0.4f, osgWidget::Widget::LAYER_MIDDLE), 87 200.0f, 88 0.0f 89 ); 90 90 91 canvas->addWidget(92 createWidget("w3", 0.6f, osgWidget::Widget::LAYER_HIGH),93 400.0f,94 0.0f95 );91 canvas->addWidget( 92 createWidget("w3", 0.6f, osgWidget::Widget::LAYER_HIGH), 93 400.0f, 94 0.0f 95 ); 96 96 97 // Add a child and then resize it relatively to the size of the parent Window.98 osgWidget::Widget* relWidget = new osgWidget::Widget("relative");97 // Add a child and then resize it relatively to the size of the parent Window. 98 osgWidget::Widget* relWidget = new osgWidget::Widget("relative"); 99 99 100 relWidget->setLayer(osgWidget::Widget::LAYER_LOW, 1);101 relWidget->setCoordinateMode(osgWidget::Widget::CM_RELATIVE);102 relWidget->setSize(0.2f, 0.2f);103 relWidget->setColor(0.5f, 0.5f, 0.1f, 0.9f);100 relWidget->setLayer(osgWidget::Widget::LAYER_LOW, 1); 101 relWidget->setCoordinateMode(osgWidget::Widget::CM_RELATIVE); 102 relWidget->setSize(0.2f, 0.2f); 103 relWidget->setColor(0.5f, 0.5f, 0.1f, 0.9f); 104 104 105 osgWidget::warn() << canvas->getWidth() << std::endl;105 osgWidget::warn() << canvas->getWidth() << std::endl; 106 106 107 canvas->addWidget(relWidget, 0.4f, 0.4f);108 109 relWidget->addOrigin(0.1f, 0.1f);110 relWidget->addSize(0.2f, 0.2f);107 canvas->addWidget(relWidget, 0.4f, 0.4f); 108 109 relWidget->addOrigin(0.1f, 0.1f); 110 relWidget->addSize(0.2f, 0.2f); 111 111 112 canvas->resize();112 canvas->resize(); 113 113 114 // Finally, add the whole thing to the WindowManager.115 wm->addChild(canvas);114 // Finally, add the whole thing to the WindowManager. 115 wm->addChild(canvas); 116 116 117 return osgWidget::createExample(viewer, wm);117 return osgWidget::createExample(viewer, wm); 118 118 } 119 119 120 120 /* 121 121 int main(int argc, char** argv) { 122 osgViewer::Viewer viewer;122 osgViewer::Viewer viewer; 123 123 124 osgWidget::WindowManager* wm = new osgWidget::WindowManager(125 &viewer,126 1280.0f,127 1024.0f,128 MASK_2D,129 osgWidget::WindowManager::WM_PICK_DEBUG130 );131 132 osgWidget::Canvas* canvas = new osgWidget::Canvas("canvas");124 osgWidget::WindowManager* wm = new osgWidget::WindowManager( 125 &viewer, 126 1280.0f, 127 1024.0f, 128 MASK_2D, 129 osgWidget::WindowManager::WM_PICK_DEBUG 130 ); 131 132 osgWidget::Canvas* canvas = new osgWidget::Canvas("canvas"); 133 133 134 canvas->addWidget(new osgWidget::Widget("spacer", 2.0f, 300.0f), 1280.0f, 0.0f);134 canvas->addWidget(new osgWidget::Widget("spacer", 2.0f, 300.0f), 1280.0f, 0.0f); 135 135 136 canvas->setOrigin(0.0f, 300.0f);136 canvas->setOrigin(0.0f, 300.0f); 137 137 138 wm->addChild(canvas);138 wm->addChild(canvas); 139 139 140 return osgWidget::createExample(viewer, wm);140 return osgWidget::createExample(viewer, wm); 141 141 } 142 142 */
