#include "CompositeWidget.h" #include "utils/ImageUtils.h" #include "CompositeWidgetManager.h" #include "common/SpdLogger.h" CompositeWidget::CompositeWidget(std::string name, float w, float h, std::string fileName, std::string message, osgWidget::Widget::Layer layer, CompositeWidgetManager *wm) :osgWidget::Widget(name, w, h) { //osg::Image *image = ImageUtils::readImage(fileName); LOG_INFO("setimage, {}", fileName); setImage(fileName, true, true); setTexCoord(0.0f, 0.0f, osgWidget::Widget::LOWER_LEFT); setTexCoord(1.0f, 0.0f, osgWidget::Widget::LOWER_RIGHT); setTexCoord(1.0f, 1.0f, osgWidget::Widget::UPPER_RIGHT); setTexCoord(0.0f, 1.0f, osgWidget::Widget::UPPER_LEFT); setLayer(layer); setEventMask(osgWidget::EVENT_MOUSE_PUSH | osgWidget::EVENT_MOUSE_RELEASE | osgWidget::EVENT_MOUSE_DRAG); if (message == "background" || message == "light") { setColor(1, 1, 1, 0); } else { setColor(1, 1, 1, 0); } _PointerX = 0.0; _PointerY = 0.0; order = message; _wm = wm; } CompositeWidget::~CompositeWidget(void) { } bool CompositeWidget::mousePush(double x, double y, const osgWidget::WindowManager* wm) { if (order == "center") { if (_wm->_bAllow) { if (_wm->_center == true) { _wm->_center = false; setColor(1, 1, 1, 0); } else { _wm->_center = true; setColor(1, 1, 1, 0); } } } else { if (order == "N") { _wm->_N = true; } else { _wm->_state = CompositeWidgetManager::MOUSE_PUSH; } setColor(1, 1, 1, 0); } _PointerX = x; _PointerY = y; _wm->_local_x = _PointerX - _wm->_center_x; _wm->_local_y = _PointerY - _wm->_center_y; return false; } bool CompositeWidget::mouseDrag(double x, double y, const osgWidget::WindowManager* wm) { if (order == "N") { _wm->_state = CompositeWidgetManager::MOUSE_DRAG; _wm->_N = false; if (_wm->_autoHome == true) return false; _PointerX += x; _PointerY += y; _wm->_local_x = _PointerX - _wm->_center_x; _wm->_local_y = _PointerY - _wm->_center_y; } return true; } bool CompositeWidget::mouseRelease(double x, double y, const osgWidget::WindowManager* wm) { _wm->_state = CompositeWidgetManager::MOUSE_RELEASE; if (getName() != "center") { if (getName() != "backGround1") { setColor(1, 1, 1, 0); } } if (order == "N") { getParent()->resize(); } return false; }