本文整理汇总了C++中GraphAttributes::templateNode方法的典型用法代码示例。如果您正苦于以下问题:C++ GraphAttributes::templateNode方法的具体用法?C++ GraphAttributes::templateNode怎么用?C++ GraphAttributes::templateNode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GraphAttributes
的用法示例。
在下文中一共展示了GraphAttributes::templateNode方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeAttributes
static inline void writeAttributes(
std::ostream &out,
const GraphAttributes &GA, const node &v)
{
const long flags = GA.attributes();
out << "[";
bool separator = false; // Wheter to put separator before attribute.
if(flags & GraphAttributes::nodeId) {
writeAttribute(out, separator, "id", GA.idNode(v));
}
if(flags & GraphAttributes::nodeLabel) {
writeAttribute(out, separator, "label", GA.label(v));
}
if(flags & GraphAttributes::nodeTemplate) {
writeAttribute(out, separator, "comment", GA.templateNode(v));
}
if(flags & GraphAttributes::nodeGraphics) {
writeAttribute(out, separator, "width", GA.width(v));
writeAttribute(out, separator, "height", GA.height(v));
writeAttribute(out, separator, "shape", dot::toString(GA.shape(v)));
out << ", pos=\"" << GA.x(v) << "," << GA.y(v);
if(flags & GraphAttributes::threeD) {
out << "," << GA.z(v);
}
out << "\"";
}
if(flags & GraphAttributes::nodeStyle) {
writeAttribute(out, separator, "color", GA.strokeColor(v));
writeAttribute(out, separator, "fillcolor", GA.fillColor(v));
writeAttribute(out, separator, "stroketype", toString(GA.strokeType(v)));
writeAttribute(out, separator, "strokewidth", GA.strokeWidth(v));
writeAttribute(out, separator, "fillpattern", toString(GA.fillPattern(v)));
}
if(flags & GraphAttributes::nodeType) {
writeAttribute(out, separator, "type", int(GA.type(v)));
}
if(flags & GraphAttributes::nodeWeight) {
writeAttribute(out, separator, "weight", GA.weight(v));
}
out << "]";
}
示例2: writeAttributes
static inline void writeAttributes(
std::ostream &out,
const GraphAttributes &GA, const node &v)
{
const long flags = GA.attributes();
out << "[";
bool separator = false; // Wheter to put separator before attribute.
if(flags & GraphAttributes::nodeId) {
writeAttribute(out, separator, "id", GA.idNode(v));
}
if(flags & GraphAttributes::nodeLabel) {
writeAttribute(out, separator, "label", GA.label(v));
}
if(flags & GraphAttributes::nodeTemplate) {
writeAttribute(out, separator, "comment", GA.templateNode(v));
}
if(flags & GraphAttributes::nodeGraphics) {
writeAttribute(out, separator, "width", GA.width(v));
writeAttribute(out, separator, "height", GA.height(v));
writeAttribute(out, separator, "shape", dot::toString(GA.shape(v)));
out << ", pos=\"" << GA.x(v) << "," << GA.y(v);
if(flags & GraphAttributes::threeD) {
out << "," << GA.z(v);
}
out << "\"";
}
if(flags & GraphAttributes::nodeStyle) {
writeAttribute(out, separator, "color", GA.strokeColor(v));
writeAttribute(out, separator, "fillcolor", GA.fillColor(v));
}
// NOTE: Node type is weird and (probably) cannot be mapped to DOT.
// NOTE: Node weight is not supported.
out << "]";
}
示例3: ss
static inline void readAttValue(
GraphAttributes &GA,
node v,
const std::string &name,
const std::string &value)
{
const long attrs = GA.attributes();
// For not "viz" attributes, we use GraphML ones.
switch(graphml::toAttribute(name)) {
case graphml::Attribute::NodeType:
if(attrs & GraphAttributes::nodeType) {
GA.type(v) = graphml::toNodeType(value);
}
break;
case graphml::Attribute::Template:
if(attrs & GraphAttributes::nodeTemplate) {
GA.templateNode(v) = value;
}
break;
case graphml::Attribute::NodeWeight:
if(attrs & GraphAttributes::nodeWeight) {
std::istringstream ss(value);
ss >> GA.weight(v);
}
break;
case graphml::Attribute::NodeStrokeType:
if(attrs & GraphAttributes::nodeStyle) {
GA.strokeType(v) = fromString<StrokeType>(value);
}
break;
case graphml::Attribute::NodeFillPattern:
if(attrs & GraphAttributes::nodeStyle) {
GA.fillPattern(v) = fromString<FillPattern>(value);
}
break;
case graphml::Attribute::NodeStrokeWidth:
if(attrs & GraphAttributes::nodeWeight) {
std::istringstream ss(value);
ss >> GA.strokeWidth(v);
}
示例4: readData
bool GraphMLParser::readData(
GraphAttributes &GA,
const node &v,
const pugi::xml_node nodeData)
{
pugi::xml_attribute keyId = nodeData.attribute("key");
if (!keyId) {
GraphIO::logger.lout() << "Node data does not have a key." << endl;
return false;
}
const long attrs = GA.attributes();
pugi::xml_text text = nodeData.text();
switch (graphml::toAttribute(m_attrName[keyId.value()])) {
case graphml::a_nodeLabel:
if(attrs & GraphAttributes::nodeLabel) {
GA.label(v) = text.get();
}
break;
case graphml::a_x:
if(attrs & GraphAttributes::nodeGraphics) {
GA.x(v) = text.as_double();
}
break;
case graphml::a_y:
if(attrs & GraphAttributes::nodeGraphics) {
GA.y(v) = text.as_double();;
}
break;
case graphml::a_width:
if(attrs & GraphAttributes::nodeGraphics) {
GA.width(v) = text.as_double();
}
break;
case graphml::a_height:
if(attrs & GraphAttributes::nodeGraphics) {
GA.height(v) = text.as_double();
}
break;
case graphml::a_size:
if(attrs & GraphAttributes::nodeGraphics) {
double size = text.as_double();
// We want to set a new size only if width and height was not set.
if (GA.height(v) == GA.width(v)) {
GA.height(v) = GA.width(v) = size;
}
}
break;
case graphml::a_shape:
if(attrs & GraphAttributes::nodeGraphics) {
GA.shape(v) = graphml::toShape(text.get());
}
break;
case graphml::a_z:
if(attrs & GraphAttributes::threeD) {
GA.z(v) = text.as_double();
}
break;
case graphml::a_r:
if (attrs & GraphAttributes::nodeStyle
&& !GraphIO::setColorValue(text.as_int(), [&](uint8_t val) { GA.fillColor(v).red(val); })) {
return false;
}
break;
case graphml::a_g:
if(attrs & GraphAttributes::nodeStyle
&& !GraphIO::setColorValue(text.as_int(), [&](uint8_t val) { GA.fillColor(v).green(val); })) {
return false;
}
break;
case graphml::a_b:
if(attrs & GraphAttributes::nodeStyle
&& !GraphIO::setColorValue(text.as_int(), [&](uint8_t val) { GA.fillColor(v).blue(val); })) {
return false;
}
break;
case graphml::a_nodeFill:
if(attrs & GraphAttributes::nodeStyle) {
GA.fillColor(v) = text.get();
}
break;
case graphml::a_nodeStroke:
if(attrs & GraphAttributes::nodeStyle) {
GA.strokeColor(v) = text.get();
}
break;
case graphml::a_nodeType:
if(attrs & GraphAttributes::nodeType) {
GA.type(v) = graphml::toNodeType(text.get());
}
break;
case graphml::a_template:
if(attrs & GraphAttributes::nodeTemplate) {
GA.templateNode(v) = text.get();
}
break;
//.........这里部分代码省略.........
示例5: writeAttributes
static inline void writeAttributes(
std::ostream &out, int depth,
const GraphAttributes &GA, node v)
{
const long attrs = GA.attributes();
if(attrs & GraphAttributes::nodeGraphics) {
const double z = (attrs & GraphAttributes::threeD) ? GA.z(v) : 0.0;
GraphIO::indent(out, depth) << "<viz:position "
<< "x=\"" << GA.x(v) << "\" "
<< "y=\"" << GA.y(v) << "\" "
<< "z=\"" << z << "\" "
<< "/>\n";
// TODO: size is a scale here, so we have to know average size first.
// const double size = std::max(GA.width(v), GA.height(v));
// GraphIO::indent(out, depth) << "<viz:size "
// << "value=\"" << size << "\" "
// << "/>\n";
const Shape shape = GA.shape(v);
GraphIO::indent(out, depth) << "<viz:shape "
<< "value=\"" << toString(shape) << "\" "
<< "/>\n";
}
if(attrs & GraphAttributes::nodeStyle) {
const Color &color = GA.fillColor(v);
const int red = color.red();
const int green = color.green();
const int blue = color.blue();
const int alpha = color.alpha();
GraphIO::indent(out, depth) << "<viz:color "
<< "red=\"" << red << "\" "
<< "green=\"" << green << "\" "
<< "blue=\"" << blue << "\" "
<< "alpha=\"" << alpha << "\" "
<< "/>\n";
}
/*
* Node type, template and weight are not supported by VIZ module. So, they
* need to be written using <attvalues> tag (for estetic reasons, we write
* them only if either of them is present). For convenience reasons, we use
* the same names and values as in GraphML format.
*/
if(!(attrs & (GraphAttributes::nodeType |
GraphAttributes::nodeTemplate |
GraphAttributes::nodeWeight))) {
return;
}
GraphIO::indent(out, depth) << "<attvalues>\n";
if(attrs & GraphAttributes::nodeType) {
writeAttValue(
out, depth + 1,
graphml::a_nodeType, graphml::toString(GA.type(v)));
}
if(attrs & GraphAttributes::nodeTemplate) {
writeAttValue(out, depth + 1, graphml::a_template, GA.templateNode(v));
}
if(attrs & GraphAttributes::nodeWeight) {
writeAttValue(out, depth + 1, graphml::a_nodeWeight, GA.weight(v));
}
GraphIO::indent(out, depth) << "</attvalues>\n";
}
示例6: read
//.........这里部分代码省略.........
case labelPredefKey:
if (nodeSon->m_valueType != gmlStringValue) break;
label = nodeSon->m_stringValue;
break;
case edgeWeightPredefKey: //sic!
if (nodeSon->m_valueType != gmlIntValue) break;
weight = nodeSon->m_intValue;
break;
}
}
// check if everything required is defined correctly
if (vId == notDefined) {
setError("node id not defined");
return false;
}
// create new node if necessary and assign attributes
if (m_mapToNode[vId] == nullptr) m_mapToNode[vId] = G.newNode();
node v = m_mapToNode[vId];
if (AG.attributes() & GraphAttributes::nodeGraphics)
{
AG.x(v) = x;
AG.y(v) = y;
AG.width (v) = w;
AG.height(v) = h;
AG.shape(v) = strToShape[shape];
}
if (AG.attributes() & GraphAttributes::nodeLabel)
AG.label(m_mapToNode[vId]) = label;
if (AG.attributes() & GraphAttributes::nodeTemplate)
AG.templateNode(m_mapToNode[vId]) = templ;
if (AG.attributes() & GraphAttributes::nodeId)
AG.idNode(m_mapToNode[vId]) = vId;
if (AG.attributes() & GraphAttributes::nodeWeight)
AG.weight(m_mapToNode[vId]) = weight;
if (AG.attributes() & GraphAttributes::nodeStyle)
{
AG.fillColor(m_mapToNode[vId]) = fill;
AG.strokeColor(m_mapToNode[vId]) = line;
AG.setFillPattern(m_mapToNode[vId], intToFillPattern(pattern));
AG.setStrokeType(m_mapToNode[vId], intToStrokeType(stipple));
AG.strokeWidth(m_mapToNode[vId]) = lineWidth;
}
}//node
//Todo: line style set stipple value
break;
case edgePredefKey: {
string arrow; // the arrow type attribute
string fill; //the color fill attribute
int stipple = 1; //the line style
float lineWidth = 1.0f;
double edgeWeight = 1.0;
int subGraph = 0; //edgeSubGraphs attribute
string label; // label attribute
if (son->m_valueType != gmlListBegin) break;
// set attributes to default values
int sourceId = notDefined, targetId = notDefined;
Graph::EdgeType umlType = Graph::association;
// read all relevant attributes
示例7: read
//.........这里部分代码省略.........
label = nodeSon->m_stringValue;
break;
}
}
// check if everything required is defined correctly
if (vId == notDefined) {
setError("node id not defined");
return false;
}
// create new node if necessary and assign attributes
if (m_mapToNode[vId] == 0) m_mapToNode[vId] = G.newNode();
if (AG.attributes() & GraphAttributes::nodeGraphics)
{
AG.x(m_mapToNode[vId]) = x;
AG.y(m_mapToNode[vId]) = y;
AG.width (m_mapToNode[vId]) = w;
AG.height(m_mapToNode[vId]) = h;
if (shape == "oval")
AG.shapeNode(m_mapToNode[vId]) = GraphAttributes::oval;
else AG.shapeNode(m_mapToNode[vId]) = GraphAttributes::rectangle;
}
if ( (AG.attributes() & GraphAttributes::nodeColor) &&
(AG.attributes() & GraphAttributes::nodeGraphics) )
{
AG.colorNode(m_mapToNode[vId]) = fill;
AG.nodeLine(m_mapToNode[vId]) = line;
}
if (AG.attributes() & GraphAttributes::nodeLabel)
AG.labelNode(m_mapToNode[vId]) = label;
if (AG.attributes() & GraphAttributes::nodeTemplate)
AG.templateNode(m_mapToNode[vId]) = templ;
if (AG.attributes() & GraphAttributes::nodeId)
AG.idNode(m_mapToNode[vId]) = vId;
if (AG.attributes() & GraphAttributes::nodeStyle)
{
AG.nodePattern(m_mapToNode[vId]) =
GraphAttributes::intToPattern(pattern);
AG.styleNode(m_mapToNode[vId]) =
GraphAttributes::intToStyle(stipple);
AG.lineWidthNode(m_mapToNode[vId]) =
lineWidth;
}
}//node
//Todo: line style set stipple value
break;
case edgePredefKey: {
String arrow; // the arrow type attribute
String fill; //the color fill attribute
int stipple = 1; //the line style
double lineWidth = 1.0;
double edgeWeight = 1.0;
int subGraph = 0; //edgeSubGraph attribute
String label; // label attribute
if (son->m_valueType != gmlListBegin) break;
// set attributes to default values
int sourceId = notDefined, targetId = notDefined;
Graph::EdgeType umlType = Graph::association;
// read all relevant attributes
GmlObject *edgeSon = son->m_pFirstSon;