/************************************************************************* set the movement range of the thumb for the horizontal axis. *************************************************************************/ void Thumb::setHorzRange(float min, float max) { Sizef parentSize(getParentPixelSize()); // ensure min <= max, swap if not. if (min > max) { float tmp = min; max = min; min = tmp; } d_horzMax = max; d_horzMin = min; // validate current position. const float cp = CoordConverter::asAbsolute(getXPosition(), parentSize.d_width); if (cp < min) { setXPosition(cegui_absdim(min)); } else if (cp > max) { setXPosition(cegui_absdim(max)); } }
//------------------------------------------------------------- // VtxCloudsTabs::getObjAttributes() when switched in //------------------------------------------------------------- void VtxCloudsTabs::getObjAttributes(){ if(!update_needed) return; CloudLayer *obj=object(); double val=(obj->size-parentSize())/MILES; updateSlider(CellSizeSlider,obj->detail); updateSlider(SizeSlider,val); updateSlider(TiltSlider,obj->tilt); updateSlider(RotPhaseSlider,obj->rot_phase); updateSlider(DaySlider,obj->day); updateSlider(ShineSlider,obj->shine); //updateSlider(DensitySlider,obj->density); updateSlider(DiffusionSlider,obj->diffusion); updateSlider(CminSlider,obj->cmin); updateSlider(CmaxSlider,obj->cmax); updateSlider(SmaxSlider,obj->smax); updateSlider(CrotSlider,obj->crot); updateSlider(NumSpritesSlider,obj->num_sprites); updateColor(AmbientSlider,obj->ambient); updateColor(EmissionSlider,obj->emission); updateColor(SpecularSlider, obj->specular); updateColor(DiffuseSlider,obj->diffuse); object_name->SetValue(object_node->node->nodeName()); update_needed=false; TNclouds *tnode=obj->getClouds(); if(!tnode) return; char top[128]=""; char bottom[128]=""; char type[128]=""; char offset[128]=""; TNarg &args=*((TNarg *)tnode->left); if(args[0]) args[0]->valueString(top); if(args[1]) args[1]->valueString(bottom); if(args[2]) args[2]->valueString(type); if(args[3]) args[3]->valueString(offset); top_expr->SetValue(top); bottom_expr->SetValue(bottom); type_expr->SetValue(type); }
void VtxMoonTabs::updateControls(){ Moon *obj=object(); updateSlider(SizeSlider,obj->size/MILES); updateSlider(CellSizeSlider,obj->detail); updateSlider(OrbitRadiusSlider,obj->orbit_radius/parentSize()); updateSlider(OrbitPhaseSlider,obj->orbit_phase); updateSlider(OrbitTiltSlider,obj->orbit_skew); updateSlider(TiltSlider,obj->tilt); updateSlider(RotPhaseSlider,obj->rot_phase); updateSlider(DaySlider,obj->day); updateSlider(YearSlider,obj->year); updateSlider(ShineSlider,obj->shine); updateColor(AmbientSlider,obj->ambient); updateColor(EmissionSlider,obj->emission); updateColor(SpecularSlider, obj->specular); updateColor(DiffuseSlider,obj->diffuse); updateColor(ShadowSlider,obj->shadow_color); object_name->SetValue(object_node->node->nodeName()); }
//----------------------------------------------------------------------------// float WidgetDim::getValue(const Window& wnd) const { const Window* widget; // if target widget name is empty, then use the input window. if (d_widgetName.empty()) { widget = &wnd; } // name not empty, so find window with required name else { widget = wnd.getChild(d_widgetName); } // get size of parent; required to extract pixel values Sizef parentSize(widget->getParentPixelSize()); switch (d_what) { case DT_WIDTH: return widget->getPixelSize().d_width; break; case DT_HEIGHT: return widget->getPixelSize().d_height; break; case DT_X_OFFSET: Logger::getSingleton().logEvent("WigetDim::getValue - Nonsensical DimensionType of DT_X_OFFSET specified! returning 0.0f"); return 0.0f; break; case DT_Y_OFFSET: Logger::getSingleton().logEvent("WigetDim::getValue - Nonsensical DimensionType of DT_Y_OFFSET specified! returning 0.0f"); return 0.0f; break; case DT_LEFT_EDGE: case DT_X_POSITION: return CoordConverter::asAbsolute(widget->getPosition().d_x, parentSize.d_width); break; case DT_TOP_EDGE: case DT_Y_POSITION: return CoordConverter::asAbsolute(widget->getPosition().d_y, parentSize.d_height); break; case DT_RIGHT_EDGE: return CoordConverter::asAbsolute(widget->getArea().d_max.d_x, parentSize.d_width); break; case DT_BOTTOM_EDGE: return CoordConverter::asAbsolute(widget->getArea().d_max.d_y, parentSize.d_height); break; default: CEGUI_THROW(InvalidRequestException( "unknown or unsupported DimensionType encountered.")); break; } }
/************************************************************************* Handler for mouse movement events *************************************************************************/ void Thumb::onMouseMove(MouseEventArgs& e) { // default processing PushButton::onMouseMove(e); // only react if we are being dragged if (d_beingDragged) { Sizef parentSize(getParentPixelSize()); Vector2f delta; float hmin, hmax, vmin, vmax; delta = CoordConverter::screenToWindow(*this, e.position); hmin = d_horzMin; hmax = d_horzMax; vmin = d_vertMin; vmax = d_vertMax; // calculate amount of movement delta -= d_dragPoint; delta.d_x /= parentSize.d_width; delta.d_y /= parentSize.d_height; // // Calculate new (pixel) position for thumb // UVector2 newPos(getPosition()); if (d_horzFree) { newPos.d_x.d_scale += delta.d_x; // limit value to within currently set range newPos.d_x.d_scale = (newPos.d_x.d_scale < hmin) ? hmin : (newPos.d_x.d_scale > hmax) ? hmax : newPos.d_x.d_scale; } if (d_vertFree) { newPos.d_y.d_scale += delta.d_y; // limit new position to within currently set range newPos.d_y.d_scale = (newPos.d_y.d_scale < vmin) ? vmin : (newPos.d_y.d_scale > vmax) ? vmax : newPos.d_y.d_scale; } // update thumb position if needed if (newPos != getPosition()) { setPosition(newPos); // send notification as required if (d_hotTrack) { WindowEventArgs args(this); onThumbPositionChanged(args); } } } ++e.handled; }