void QvisAppearanceWidget::opacityChanged(int opacity, int index) { int MultiCurve = viewer->GetPlotIndex("MultiCurve"); AttributeSubject *atts = viewer->DelayedState()->GetPlotAttributes(MultiCurve); if(atts != 0) { DataNode root("root"); atts->CreateNode(&root, true, false); DataNode *multiCurveNode = root.GetNode("MultiCurveAttributes"); DataNode *multiColorNode = multiCurveNode->GetNode("multiColor"); DataNode *calNode = multiColorNode->GetNode("ColorAttributeList"); DataNode **children = calNode->GetChildren(); DataNode *colorNode = children[index]->GetNode("color"); const unsigned char *oldColor = colorNode->AsUnsignedCharArray(); unsigned char newColor[4]; newColor[0] = oldColor[0]; newColor[1] = oldColor[1]; newColor[2] = oldColor[2]; newColor[3] = (unsigned char)opacity; colorNode->SetUnsignedCharArray(newColor, 4); atts->SetFromNode(&root); atts->Notify(); emit multiCurveChanged(atts); } }
void QvisAppearanceWidget::singleColorOpacityChanged(int opacity) { int MultiCurve = viewer->GetPlotIndex("MultiCurve"); AttributeSubject *atts = viewer->DelayedState()->GetPlotAttributes(MultiCurve); if(atts != 0) { DataNode root("root"); atts->CreateNode(&root, true, false); DataNode *multiCurveNode = root.GetNode("MultiCurveAttributes"); DataNode *singleColorNode = multiCurveNode->GetNode("singleColor"); DataNode *colorAttributeNode = singleColorNode->GetNode("ColorAttribute"); DataNode *colorNode = colorAttributeNode->GetNode("color"); const unsigned char *oldColor = colorNode->AsUnsignedCharArray(); unsigned char newColor[4]; newColor[0] = oldColor[0]; newColor[1] = oldColor[1]; newColor[2] = oldColor[2]; newColor[3] = (unsigned char)opacity; DataNode *newColorNode = new DataNode("color", newColor, 4); colorAttributeNode->RemoveNode(colorNode); colorAttributeNode->AddNode(newColorNode); atts->SetFromNode(&root); atts->Notify(); emit multiCurveChanged(atts); } }
void MultiCurveViewer::CreatePlot() { if(generalWidget->GetCurrentVariable() == -1) return; // Determine the variable. std::string var(generalWidget->GetCurrentVariableName().toStdString()); // Delete the active plots. viewer->DelayedMethods()->DeleteActivePlots(); // Create a title. viewer->DelayedMethods()->AddAnnotationObject(AnnotationObject::Text2D, "title0"); viewer->DelayedMethods()->AddAnnotationObject(AnnotationObject::Text2D, "title1"); // Create a multi curve plot. int MultiCurve = viewer->GetPlotIndex("MultiCurve"); viewer->DelayedMethods()->AddPlot(MultiCurve, var); AttributeSubject *multiCurveAtts = viewer->DelayedState()->GetPlotAttributes(MultiCurve); if(multiCurveAtts != 0) { DataNode root("root"); multiCurveAtts->CreateNode(&root, true, false); DataNode *multiCurveNode = root.GetNode("MultiCurveAttributes"); DataNode *multiColorNode = multiCurveNode->GetNode("multiColor"); DataNode *calNode = multiColorNode->GetNode("ColorAttributeList"); DataNode **children = calNode->GetChildren(); unsigned char color[4]; color[0] = 0; color[1] = 100; color[2] = 0; color[3] = 255; children[0]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 85; color[1] = 107; color[2] = 47; children[1]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 0; color[1] = 205; color[2] = 208; children[2]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 0; color[1] = 0; color[2] = 254; children[3]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 209; color[1] = 105; color[2] = 30; children[4]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 147; color[1] = 0; color[2] = 210; children[5]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 83; color[1] = 133; color[2] = 138; children[6]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 204; color[1] = 38; color[2] = 38; children[7]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 0; color[1] = 0; color[2] = 0; children[8]->GetNode("color")->SetUnsignedCharArray(color, 4); color[0] = 220; color[1] = 20; color[2] = 60; children[9]->GetNode("color")->SetUnsignedCharArray(color, 4); multiCurveNode->GetNode("yAxisTitleFormat")->SetString("%4.2f"); multiCurveNode->GetNode("useYAxisTickSpacing")->SetBool(true); multiCurveNode->GetNode("yAxisTickSpacing")->SetDouble(0.25); multiCurveNode->GetNode("markerVariable")->SetString("v"); multiCurveAtts->SetFromNode(&root); multiCurveAtts->Notify(); viewer->DelayedMethods()->SetPlotOptions(MultiCurve); } // Add an index select operator. int IndexSelect = viewer->GetOperatorIndex("IndexSelect"); viewer->DelayedMethods()->AddOperator(IndexSelect); AttributeSubject *indexSelectAtts = viewer->DelayedState()->GetOperatorAttributes(IndexSelect); if(indexSelectAtts != 0) { indexSelectAtts->SetValue("xMin", 0); indexSelectAtts->SetValue("xMax", -1); indexSelectAtts->SetValue("yMin", 16); indexSelectAtts->SetValue("yMax", 25); indexSelectAtts->Notify(); viewer->DelayedMethods()->SetOperatorOptions(IndexSelect); } // // Issue a timer to finish the plot. // QTimer::singleShot(20, this, SLOT(finishPlot())); }