/*************************************************************************
	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));
	}

}
Exemple #2
0
//-------------------------------------------------------------
// 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);
}
Exemple #3
0
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());
}
Exemple #4
0
//----------------------------------------------------------------------------//
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;
}