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(); }
IccProfile& effectiveInputProfile() { if (!embeddedProfile.isNull()) { return embeddedProfile; } else if (!inputProfile.isNull()) { return inputProfile; } else { return sRGB(); } }
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(); } }
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); } } }
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; }
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; }