本文整理汇总了C++中AttributeSubject类的典型用法代码示例。如果您正苦于以下问题:C++ AttributeSubject类的具体用法?C++ AttributeSubject怎么用?C++ AttributeSubject使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AttributeSubject类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: root
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);
}
}
示例2:
void
Xfer::Update(Subject *TheChangedSubject)
{
if (output == NULL)
return;
AttributeSubject *subject = (AttributeSubject *)TheChangedSubject;
// Write out the subject's guido and message size.
// output->WriteGroupStart(subject->TypeName().c_str());
// output->WriteInt(subject->GetGuido());
// int sz = subject->CalculateMessageSize(*output);
// output->WriteInt(sz);
debug5 << "Xfer::Update: Sending: opcode=" << subject->GetGuido()
// << ", len=" << sz
<< ", name=" << subject->TypeName().c_str() << endl;
// // Write the things about the subject that have changed onto the
// // output connection and flush it out to make sure it's sent.
// subject->Write(*output);
// output->WriteGroupEnd(subject->TypeName().c_str());
// output->Flush();
output->Flush(subject);
}
示例3:
void
SimpleVisApp::setNContours(int nc)
{
int Contour = viewer->GetPlotIndex("Contour");
AttributeSubject *contourAtts = viewer->DelayedState()->GetPlotAttributes(Contour);
if(contourAtts != 0)
{
contourAtts->SetValue("contourNLevels", nc);
contourAtts->Notify();
viewer->DelayedMethods()->SetPlotOptions(Contour);
}
}
示例4: multiCurveChanged
void
QvisAppearanceWidget::lineWidthChanged(int style)
{
int MultiCurve = viewer->GetPlotIndex("MultiCurve");
AttributeSubject *atts = viewer->DelayedState()->GetPlotAttributes(MultiCurve);
if(atts != 0)
{
atts->SetValue("lineWidth", style);
atts->Notify();
emit multiCurveChanged(atts);
}
}
示例5:
void
QvisPostableWindowObserver::apply()
{
AttributeSubject *as = (AttributeSubject *)selectedSubject;
// If the AttributeSubject that we're observing has fields
// that are selected, make it notify all its observers.
if(as->NumAttributesSelected() > 0)
{
as->Notify();
}
}
示例6: ClearAtts
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;
}
}
}
示例7:
void
Xfer::Update(Subject *TheChangedSubject)
{
if (output == NULL)
return;
AttributeSubject *subject = (AttributeSubject *)TheChangedSubject;
debug5 << "Xfer::Update: Sending: opcode=" << subject->GetGuido()
<< ", name=" << subject->TypeName().c_str() << endl;
AttributeSubjectSerialize ser;
ser.SetConnection(output);
ser.Flush(subject);
}
示例8: tr
void
QvisPostableWindowObserver::loadSubject()
{
if (!subject)
return;
QString filename = QFileDialog::getOpenFileName(this,
tr("Open Attribute XML"),
NULL,
tr("XML Files (*.xml);;"
"All files (*)"));
if (filename.isNull())
return;
AttributeSubject *as = (AttributeSubject *)subject;
SingleAttributeConfigManager mgr(as);
mgr.Import(filename.toStdString());
as->SelectAll();
as->Notify();
}
示例9: SetClientAttsFromDefault
void ViewerOperatorFactory::SetClientAttsFromDefault(const int type)
{
//
// Check that the type is within range and that the type has been
// registered.
//
if (type < 0 || type >= nTypes)
{
return;
}
//
// Copy the attributes.
//
AttributeSubject *clientAtts = viewerPluginInfo[type]->GetClientAtts();
AttributeSubject *defaultAtts = viewerPluginInfo[type]->GetDefaultAtts();
viewerPluginInfo[type]->CopyAttributes(clientAtts, defaultAtts);
clientAtts->Notify();
}
示例10:
void
MPIXfer::Update(Subject *TheChangedSubject)
{
// We only do this until we know how to merge replies....
if (!PAR_UIProcess())
return;
if (output == NULL)
return;
AttributeSubject *subject = (AttributeSubject *)TheChangedSubject;
// Write out the subject's guido and message size.
output->WriteInt(subject->GetGuido());
output->WriteInt(subject->CalculateMessageSize(*output));
// Write the things about the subject that have changed onto the
// output connection and flush it out to make sure it's sent.
subject->Write(*output);
output->Flush();
}
示例11: Work
virtual void Work()
{
// Open a database
GetViewerMethods()->InvertBackgroundColor();
GetViewerMethods()->OpenDatabase("/usr/gapps/visit/data/noise.silo");
Synchronize();
// Create a plot and draw it.
int plotType = PlotIndex("Pseudocolor");
if(plotType != INVALID_PLUGIN_INDEX)
{
debug1 << "Plot type = " << plotType << endl;
GetViewerMethods()->AddPlot(plotType, "hardyglobal");
int threeSlice = OperatorIndex("ThreeSlice");
if(threeSlice != INVALID_PLUGIN_INDEX)
GetViewerMethods()->AddOperator(threeSlice);
GetViewerMethods()->DrawPlots();
}
Synchronize();
// Save an image.
GetViewerMethods()->SaveWindow();
// Set some pseudocolor plot attributes using the base class'
// SetValue methods.
AttributeSubject *pcAtts = GetViewerState()->GetPlotAttributes(plotType);
if(pcAtts != 0)
{
pcAtts->SetValue("min", 1.5);
pcAtts->SetValue("minFlag", true);
pcAtts->SetValue("max", 4.5);
pcAtts->SetValue("maxFlag", true);
pcAtts->SetValue("colorTableName", "calewhite");
pcAtts->Notify();
GetViewerMethods()->SetPlotOptions(plotType);
}
// Save an image.
GetViewerMethods()->SaveWindow();
// Enter an event loop so the program keeps running and we can
// interact with the viewer.
EventLoop();
}
示例12: var
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()));
}