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 AttributeSubjectMap::SetFromNode(DataNode *parentNode, AttributeSubject *factoryObj) { // // Clear the attributes. // ClearAtts(); // // Look for the required nodes. // if(parentNode == 0) return; DataNode *mapNode = parentNode->GetNode("AttributeSubjectMap"); if(mapNode == 0) return; DataNode *indicesNode = mapNode->GetNode("indices"); if(indicesNode == 0) return; DataNode *attsNode = mapNode->GetNode("attributes"); if(attsNode == 0) return; // // Now that we have all of the nodes that we need, read in the objects // and add them to the "map". // const intVector &iv = indicesNode->AsIntVector(); DataNode **attsObjects = attsNode->GetChildren(); const int numAtts = attsNode->GetNumChildren(); for(int i = 0; i < iv.size(); ++i) { if(i < numAtts) { // Create a fresh AttributeSubject so that its fields are // initialized to the default values and not those last read in. AttributeSubject *reader = factoryObj->NewInstance(false); // Initialize the object using the data node. reader->SetFromNode(attsObjects[i]); // Add the object to the map. SetAtts(iv[i], reader); // delete the reader object. delete reader; } } }
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())); }