void Scroller::onScrolled(Widget& widget, double x, double y) { if (orientation == HORIZONTAL) setValue(value + float(x) * getValueStep(), true); else setValue(value + float(y) * getValueStep(), true); }
void Scroller::onButtonClicked(Widget& widget, const vec2& point, input::Button button, bool clicked) { if (!clicked) return; const vec2 local = transformToLocal(point); const float size = getHandleSize(); const float offset = getHandleOffset(); if (orientation == HORIZONTAL) { if (local.x < offset) setValue(value - getValueStep(), true); else if (local.x >= offset + size) setValue(value + getValueStep(), true); } else { if (local.y > getHeight() - offset) setValue(value - getValueStep(), true); else if (local.y <= getHeight() - offset - size) setValue(value + getValueStep(), true); } }
void Scroller::onKeyPressed(Widget& widget, input::Key key, bool pressed) { if (pressed) { switch (key) { case input::KEY_DOWN: case input::KEY_RIGHT: { setValue(value + getValueStep(), true); break; } case input::KEY_UP: case input::KEY_LEFT: { setValue(value - getValueStep(), true); break; } case input::KEY_HOME: { setValue(minValue, true); break; } case input::KEY_END: { setValue(maxValue, true); break; } default: break; } } }
void Slider::updateView(float mouseData[2], int clickType, wchar_t keyChar, vector<string> eventCompList) { if (getVisible()) { float transparency = getTransparency(); if ((getFocusEffect() == true) && (getMouseOverContainer() == true)) transparency = 1.0f; if (!getMouseOverContainer()) slide = false; if (!getEnabled()) { setActualTex(getDisabledTex()); } else { if ((slide || isMouseOver(mouseData) || button->isMouseOver(mouseData))&&getMouseOverContainer()) setActualTex(getHighlightTex()); else { setActualTex(getNormalTex()); //slide = false; } } if (clickType == 1 && (isMouseOver(mouseData) || button->isMouseOver(mouseData))) { slide = true; } if ((clickType == -1) && (slide)) { slide = false; } if (slide) { if (horizontal) { float step = getWidth()/((getMaxValue()-getMinValue())/getValueStep()); if (mouseData[0] >= button->getPosX()+step) { if (setPosition(getPosition()+getValueStep())) sendNewValue(getPosition(), eventCompList); } if (mouseData[0] <= button->getPosX()-step) { if (setPosition(getPosition()-getValueStep())) sendNewValue(getPosition(), eventCompList); } } else { float step = getHeight()/((getMaxValue()-getMinValue())/getValueStep()); if (mouseData[1] <= button->getPosY()-step) { if (setPosition(getPosition()+getValueStep())) sendNewValue(getPosition(), eventCompList); } if (mouseData[1] >= button->getPosY()+step) { if (setPosition(getPosition()-getValueStep())) sendNewValue(getPosition(), eventCompList); } } } float posX = getPosX(); float posY = getPosY(); float height = getHeight(); float width = getWidth(); float vals[] = {posX, posY, 0, 1, posX, posY+height, 0, 0, posX+width, posY+height, 1, 0, posX+width, posY, 1, 1 }; h3dShowOverlays(vals, 4,1, 1, 1, transparency,getActualTex(), 0 ); if (slide) { button->setMouseOverIsTrue(true); button->updateView(mouseData,1,keyChar,eventCompList); } else { button->setMouseOverIsTrue(false); button->updateView(mouseData,clickType,keyChar,eventCompList); } } }