本文整理汇总了C++中GraphAttributes::weight方法的典型用法代码示例。如果您正苦于以下问题:C++ GraphAttributes::weight方法的具体用法?C++ GraphAttributes::weight怎么用?C++ GraphAttributes::weight使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GraphAttributes
的用法示例。
在下文中一共展示了GraphAttributes::weight方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: exportAttributesSimple
// assumes, that the Graphs of MultilevelGraph and GA are the same, not copies!
void MultilevelGraph::exportAttributesSimple(GraphAttributes &GA) const
{
OGDF_ASSERT(&(GA.constGraph()) == m_G);
prepareGraphAttributes(GA);
for(node v : m_G->nodes) {
GA.x(v) = m_GA->x(v);
GA.y(v) = m_GA->y(v);
//TODO: Check what this w,h computation does
double w = GA.width(v);
double h = GA.height(v);
if(w > 0 || h > 0) {
double factor = m_radius[v] / sqrt(w*w + h*h) * 2.0f;
w *= factor;
h *= factor;
} else {
w = h = m_radius[v] * sqrt(2.0f);
}
GA.width(v) = w;
GA.height(v) = h;
GA.weight(v) = m_reverseNodeMergeWeight[v->index()];
}
for(edge e : m_G->edges) {
GA.doubleWeight(e) = m_weight[e];
}
}
示例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));
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 << "]";
}
示例3: exportAttributes
void MultilevelGraph::exportAttributes(GraphAttributes &GA) const
{
OGDF_ASSERT(GA.constGraph().numberOfNodes() == m_G->numberOfNodes());
OGDF_ASSERT(GA.constGraph().numberOfEdges() == m_G->numberOfEdges());
prepareGraphAttributes(GA);
std::vector<node> tempNodeAssociations;
const Graph &cG = GA.constGraph();
tempNodeAssociations.resize(cG.maxNodeIndex()+1, nullptr);
for(node v : cG.nodes) {
tempNodeAssociations[v->index()] = v;
}
for(node v : m_G->nodes) {
GA.x(tempNodeAssociations[m_nodeAssociations[v]]) = m_GA->x(v);
GA.y(tempNodeAssociations[m_nodeAssociations[v]]) = m_GA->y(v);
double w = GA.width(tempNodeAssociations[m_nodeAssociations[v]]);
double h = GA.height(tempNodeAssociations[m_nodeAssociations[v]]);
if(w > 0 || h > 0) {
double factor = m_radius[v] / sqrt(w*w + h*h) * 2.0f;
w *= factor;
h *= factor;
} else {
w = h = m_radius[v] * sqrt(2.0f);
}
GA.width(tempNodeAssociations[m_nodeAssociations[v]]) = w;
GA.height(tempNodeAssociations[m_nodeAssociations[v]]) = h;
GA.weight(tempNodeAssociations[m_nodeAssociations[v]]) = m_reverseNodeMergeWeight[v->index()];
}
std::vector<edge> tempEdgeAssociations;
tempEdgeAssociations.resize(cG.maxEdgeIndex()+1, nullptr);
for(edge e :cG.edges) {
tempEdgeAssociations[e->index()] = e;
}
for(edge e : m_G->edges) {
GA.doubleWeight(tempEdgeAssociations[m_edgeAssociations[e]]) = m_weight[e];
}
}
示例4: 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);
}
示例5: readData
//.........这里部分代码省略.........
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;
case graphml::a_nodeWeight:
if(attrs & GraphAttributes::nodeWeight) {
GA.weight(v) = text.as_int();
}
break;
default:
GraphIO::logger.lout(Logger::LL_MINOR) << "Unknown node attribute: \"" << keyId.value() << "\"." << endl;
}
return true;
}
示例6: 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";
}
示例7: read
bool GmlParser::read(Graph &G, GraphAttributes &AG)
{
OGDF_ASSERT(&G == &(AG.constGraph()))
G.clear();
int minId = m_mapToNode.low();
int maxId = m_mapToNode.high();
int notDefined = minId-1; //indicates not defined id key
HashArray<string,Shape> strToShape(shRect);
strToShape["rectangle"] = shRect;
strToShape["rect"] = shRect;
strToShape["roundedRect"] = shRoundedRect;
strToShape["oval"] = shEllipse;
strToShape["ellipse"] = shEllipse;
strToShape["triangle"] = shTriangle;
strToShape["pentagon"] = shPentagon;
strToShape["hexagon"] = shHexagon;
strToShape["octagon"] = shOctagon;
strToShape["rhomb"] = shRhomb;
strToShape["trapeze"] = shTrapeze;
strToShape["parallelogram"] = shParallelogram;
strToShape["invTriangle"] = shInvTriangle;
strToShape["invTrapeze"] = shInvTrapeze;
strToShape["invParallelogram"] = shInvParallelogram;
strToShape["image"] = shImage;
DPolyline bends;
GmlObject *son = m_graphObject->m_pFirstSon;
for(; son; son = son->m_pBrother) {
switch(id(son)) {
case nodePredefKey: {
if (son->m_valueType != gmlListBegin) break;
// set attributes to default values
int vId = notDefined;
double x = 0, y = 0, w = 0, h = 0;
string label;
string templ;
string fill; // the fill color attribute
string line; // the line color attribute
string shape; //the shape type
float lineWidth = 1.0f; //node line width
int pattern = 1; //node brush pattern
int stipple = 1; //line style pattern
int weight = 0; // node weight
// read all relevant attributes
GmlObject *nodeSon = son->m_pFirstSon;
for(; nodeSon; nodeSon = nodeSon->m_pBrother) {
switch(id(nodeSon)) {
case idPredefKey:
if(nodeSon->m_valueType != gmlIntValue) break;
vId = nodeSon->m_intValue;
break;
case graphicsPredefKey: {
if (nodeSon->m_valueType != gmlListBegin) break;
GmlObject *graphicsObject = nodeSon->m_pFirstSon;
for(; graphicsObject;
graphicsObject = graphicsObject->m_pBrother)
{
switch(id(graphicsObject)) {
case xPredefKey:
if(graphicsObject->m_valueType != gmlDoubleValue) break;
x = graphicsObject->m_doubleValue;
break;
case yPredefKey:
if(graphicsObject->m_valueType != gmlDoubleValue) break;
y = graphicsObject->m_doubleValue;
break;
case wPredefKey:
if(graphicsObject->m_valueType != gmlDoubleValue) break;
w = graphicsObject->m_doubleValue;
break;
case hPredefKey:
if(graphicsObject->m_valueType != gmlDoubleValue) break;
h = graphicsObject->m_doubleValue;
break;
case fillPredefKey:
if(graphicsObject->m_valueType != gmlStringValue) break;
fill = graphicsObject->m_stringValue;
break;
case linePredefKey:
if(graphicsObject->m_valueType != gmlStringValue) break;
line = graphicsObject->m_stringValue;
break;
case lineWidthPredefKey:
if(graphicsObject->m_valueType != gmlDoubleValue) break;
lineWidth = (float)graphicsObject->m_doubleValue;
//.........这里部分代码省略.........