117 lines
2.3 KiB
C++
117 lines
2.3 KiB
C++
#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;
|
|
} |