예제 #1
0
MyColorButton::MyColorButton(QWidget *parent) : QPushButton(parent)
{
	actionResetToDefault = NULL;
	actionAddToFlightAnimation = NULL;
	actionAddToKeyframeAnimation = NULL;
	parameterContainer = NULL;
	gotDefault = false;
	defaultValue = sRGB();
	currentValue = sRGB();
	setText("");
	w = 40;
	h = 15;
	SetupColor();
}
예제 #2
0
 IccProfile& effectiveInputProfile()
 {
     if (!embeddedProfile.isNull())
     {
         return embeddedProfile;
     }
     else if (!inputProfile.isNull())
     {
         return inputProfile;
     }
     else
     {
         return sRGB();
     }
 }
예제 #3
0
Texture::Visualization::Visualization(const Any& a) {
    *this = Visualization();
    if (a.type() == Any::ARRAY) {
        if (a.nameEquals("bumpInAlpha")) {
            *this = bumpInAlpha();
        } else if (a.nameEquals("defaults")) {
            *this = defaults();
        } else if (a.nameEquals("linearRGB")) {
            *this = linearRGB();
        } else if (a.nameEquals("depthBuffer")) {
            *this = depthBuffer();
        } else if (a.nameEquals("packedUnitVector")) {
            *this = packedUnitVector();
        } else if (a.nameEquals("radiance")) {
            *this = radiance();
        } else if (a.nameEquals("reflectivity")) {
            *this = reflectivity();
        } else if (a.nameEquals("sRGB")) {
            *this = sRGB();
        } else if (a.nameEquals("unitVector")) {
            *this = unitVector();
        } else {
            a.verify(false, "Unrecognized Visualization factory method");
        }
    } else {
        a.verifyName("Texture::Visualization", "Visualization");

        AnyTableReader r(a);
        String c;

        if (r.getIfPresent("channels", c)) {
            channels = toChannels(c);
        }

        r.getIfPresent("documentGamma", documentGamma);
        r.getIfPresent("invertIntensity", invertIntensity);
        r.getIfPresent("max", max);
        r.getIfPresent("min", min);
        r.getIfPresent("layer", layer);
        r.getIfPresent("mipLevel", mipLevel);

        r.verifyDone();
    }
}
예제 #4
0
void MyColorButton::mousePressEvent(QMouseEvent *event)
{
	QPushButton::mousePressEvent(event);

	Qt::MouseButton button = event->button();

	if (button == Qt::LeftButton)
	{
		QColorDialog colorDialog(this);
		sRGB colorRGB = GetColor();
		QColor color(colorRGB.R / 256, colorRGB.G / 256, colorRGB.B / 256);
		colorDialog.setCurrentColor(color);
		colorDialog.setWindowTitle(QString("Edit color: " + parameterName));
		if(colorDialog.exec() == QDialog::Accepted)
		{
			color = colorDialog.currentColor();
			colorRGB = sRGB(color.red() * 256, color.green() * 256, color.blue() * 256);
			SetColor(colorRGB);
		}
	}
}
예제 #5
0
cOneParameter cMorph::Akima(int const key, double const factor, bool const angular)
{
	int k1, k2, k3, k4, k5, k6;

	if (key >= 2) k1 = key - 2;
	else k1 = 0;

	if (key >= 1) k2 = key - 1;
	else k2 = 0;

	k3 = key;

	if (key < dataSets.size() - 1) k4 = key + 1;
	else k4 = dataSets.size() - 1;

	if (key < dataSets.size() - 2) k5 = key + 2;
	else k5 = dataSets.size() - 1;

	if (key < dataSets.size() - 3) k6 = key + 3;
	else k6 = dataSets.size() - 1;

	cOneParameter interpolated = dataSets[key].parameter;
	cMultiVal val;

	switch (dataSets[key].parameter.GetValueType())
	{
		case typeNull:
		case typeString:
		case typeBool:
			return None(key);

		case typeDouble:
		case typeInt:
		{
			double v1, v2, v3, v4, v5, v6;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			dataSets[k3].parameter.GetMultival(valueActual).Get(v3);
			dataSets[k4].parameter.GetMultival(valueActual).Get(v4);
			dataSets[k5].parameter.GetMultival(valueActual).Get(v5);
			dataSets[k6].parameter.GetMultival(valueActual).Get(v6);
			val.Store(AkimaInterpolate(factor, v1, v2, v3, v4, v5, v6, angular));
			break;
		}
		case typeRgb:
		{
			sRGB v1, v2, v3, v4, v5, v6;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			dataSets[k3].parameter.GetMultival(valueActual).Get(v3);
			dataSets[k4].parameter.GetMultival(valueActual).Get(v4);
			dataSets[k5].parameter.GetMultival(valueActual).Get(v5);
			dataSets[k6].parameter.GetMultival(valueActual).Get(v6);
			val.Store(sRGB(AkimaInterpolate(factor, v1.R, v2.R, v3.R, v4.R, v5.R, v6.R, angular),
										 AkimaInterpolate(factor, v1.G, v2.G, v3.G, v4.G, v5.G, v6.G, angular),
										 AkimaInterpolate(factor, v1.B, v2.B, v3.B, v4.B, v5.B, v6.B, angular)));
			break;
		}
		case typeVector3:
		{
			CVector3 v1, v2, v3, v4, v5, v6;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			dataSets[k3].parameter.GetMultival(valueActual).Get(v3);
			dataSets[k4].parameter.GetMultival(valueActual).Get(v4);
			dataSets[k5].parameter.GetMultival(valueActual).Get(v5);
			dataSets[k6].parameter.GetMultival(valueActual).Get(v6);
			val.Store(CVector3(AkimaInterpolate(factor, v1.x, v2.x, v3.x, v4.x, v5.x, v6.x, angular),
												 AkimaInterpolate(factor, v1.y, v2.y, v3.y, v4.y, v5.y, v6.y, angular),
												 AkimaInterpolate(factor, v1.z, v2.z, v3.z, v4.z, v5.z, v6.z, angular)));
			break;
		}
		case typeVector4:
		{
			CVector4 v1, v2, v3, v4, v5, v6;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			dataSets[k3].parameter.GetMultival(valueActual).Get(v3);
			dataSets[k4].parameter.GetMultival(valueActual).Get(v4);
			dataSets[k5].parameter.GetMultival(valueActual).Get(v5);
			dataSets[k6].parameter.GetMultival(valueActual).Get(v6);
			val.Store(CVector4(AkimaInterpolate(factor, v1.x, v2.x, v3.x, v4.x, v5.x, v6.x, angular),
												 AkimaInterpolate(factor, v1.y, v2.y, v3.y, v4.y, v5.y, v6.y, angular),
												 AkimaInterpolate(factor, v1.z, v2.z, v3.z, v4.z, v5.z, v6.z, angular),
												 AkimaInterpolate(factor, v1.w, v2.w, v3.w, v4.w, v5.w, v6.w, angular)));
			break;
		}
		case typeColorPalette:
		{
			cColorPalette v1, v2, v3, v4, v5, v6;
			cColorPalette out;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			dataSets[k3].parameter.GetMultival(valueActual).Get(v3);
			dataSets[k4].parameter.GetMultival(valueActual).Get(v4);
			dataSets[k5].parameter.GetMultival(valueActual).Get(v5);
			dataSets[k6].parameter.GetMultival(valueActual).Get(v6);
			for (int i = 0; i < v1.GetSize(); i++)
			{
				out.AppendColor(sRGB(AkimaInterpolate(factor,
																							v1.GetColor(i).R,
																							v2.GetColor(i).R,
																							v3.GetColor(i).R,
																							v4.GetColor(i).R,
																							v5.GetColor(i).R,
																							v6.GetColor(i).R,
																							angular),
														 AkimaInterpolate(factor,
																							v1.GetColor(i).G,
																							v2.GetColor(i).G,
																							v3.GetColor(i).G,
																							v4.GetColor(i).G,
																							v5.GetColor(i).G,
																							v6.GetColor(i).G,
																							angular),
														 AkimaInterpolate(factor,
																							v1.GetColor(i).B,
																							v2.GetColor(i).B,
																							v3.GetColor(i).B,
																							v4.GetColor(i).B,
																							v5.GetColor(i).B,
																							v6.GetColor(i).B,
																							angular)));
			}
			val.Store(out);
			break;
		}
	}

	interpolated.SetMultival(val, valueActual);
	return interpolated;
}
예제 #6
0
cOneParameter cMorph::Linear(const int key, const double factor, const bool angular)
{
	int k1, k2;
	if (key == dataSets.size() - 1) return dataSets[key].parameter;

	cOneParameter interpolated = dataSets[key].parameter;
	cMultiVal val;

	k1 = key;
	k2 = key + 1;

	switch (dataSets[key].parameter.GetValueType())
	{
		case typeNull:
		case typeString:
		case typeBool:
			return None(key);

		case typeDouble:
		case typeInt:
		{
			double v1, v2;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			val.Store(LinearInterpolate(factor, v1, v2, angular));
			break;
		}
		case typeRgb:
		{
			sRGB v1, v2;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			val.Store(sRGB(LinearInterpolate(factor, v1.R, v2.R, angular),
										 LinearInterpolate(factor, v1.G, v2.G, angular),
										 LinearInterpolate(factor, v1.B, v2.B, angular)));
			break;
		}
		case typeVector3:
		{
			CVector3 v1, v2;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			val.Store(CVector3(LinearInterpolate(factor, v1.x, v2.x, angular),
												 LinearInterpolate(factor, v1.y, v2.y, angular),
												 LinearInterpolate(factor, v1.z, v2.z, angular)));
			break;
		}
		case typeVector4:
		{
			CVector4 v1, v2;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			val.Store(CVector4(LinearInterpolate(factor, v1.x, v2.x, angular),
												 LinearInterpolate(factor, v1.y, v2.y, angular),
												 LinearInterpolate(factor, v1.z, v2.z, angular),
												 LinearInterpolate(factor, v1.w, v2.w, angular)));
			break;
		}
		case typeColorPalette:
		{
			cColorPalette v1, v2;
			cColorPalette out;
			dataSets[k1].parameter.GetMultival(valueActual).Get(v1);
			dataSets[k2].parameter.GetMultival(valueActual).Get(v2);
			for (int i = 0; i < v1.GetSize(); i++)
			{
				out.AppendColor(sRGB(LinearInterpolate(factor, v1.GetColor(i).R, v2.GetColor(i).R, angular),
														 LinearInterpolate(factor, v1.GetColor(i).G, v2.GetColor(i).G, angular),
														 LinearInterpolate(factor,
																							 v1.GetColor(i).B,
																							 v2.GetColor(i).B,
																							 angular)));
			}
			val.Store(out);
			break;
		}
	}

	interpolated.SetMultival(val, valueActual);
	return interpolated;
}