[kgraphviewer-devel] [kgraphviewer/libkgraphviz] src/kgraphviz: Opt: Reduce overhead for renderop QString
Kevin Funk
krf at electrostorm.net
Thu Jan 27 15:10:44 CET 2011
Git commit a6d80a326ce13245f09686645f8d402a045f9644 by Kevin Funk.
Pushed by kfunk into branch 'libkgraphviz'.
Opt: Reduce overhead for renderop QString
Turn DotRenderOp::renderop into an thing QChar wrapper
M +8 -0 src/kgraphviz/CMakeLists.txt
M +1 -1 src/kgraphviz/canvasedge.cpp
M +13 -13 src/kgraphviz/canvaselement.cpp
M +1 -1 src/kgraphviz/dotgraphview.cpp
M +2 -2 src/kgraphviz/support/dotgrammar.cpp
M +3 -3 src/kgraphviz/support/dotrenderop.h
http://commits.kde.org/9c7b74a4/a6d80a326ce13245f09686645f8d402a045f9644
diff --git a/src/kgraphviz/CMakeLists.txt b/src/kgraphviz/CMakeLists.txt
index b052d8a..e8e0cc6 100644
--- a/src/kgraphviz/CMakeLists.txt
+++ b/src/kgraphviz/CMakeLists.txt
@@ -2,6 +2,14 @@
add_definitions(-DQT_USE_FAST_CONCATENATION)
add_definitions(-DQT_USE_FAST_OPERATOR_PLUS)
+# add_definitions(-DQT_NO_CAST_TO_ASCII)
+# add_definitions(-DQT_NO_CAST_FROM_ASCII)
+# add_definitions(-DQT_STRICT_ITERATORS)
+# add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
+# add_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
+
+add_definitions(-Wall)
+
if(KGRAPHVIZ_GRAPHICSVIEW_DEBUG)
add_definitions(-DKGRAPHVIZ_GRAPHICSVIEW_DEBUG)
endif()
diff --git a/src/kgraphviz/canvasedge.cpp b/src/kgraphviz/canvasedge.cpp
index b7bb11b..f2077e2 100644
--- a/src/kgraphviz/canvasedge.cpp
+++ b/src/kgraphviz/canvasedge.cpp
@@ -172,7 +172,7 @@ void CanvasEdge::computeBoundingRect()
foreach (const DotRenderOp& dro, edge()->renderOperations())
{
// kDebug() << dro.renderop << ", ";
- if ( (dro.renderop != "B") && (dro.renderop != "p") && (dro.renderop != "P") ) continue;
+ if ( (dro.renderop != 'B') && (dro.renderop != 'p') && (dro.renderop != 'P') ) continue;
uint previousSize = points.size();
points.resize(previousSize+dro.integers[0]);
for (int i = 0; i < dro.integers[0]; i++)
diff --git a/src/kgraphviz/canvaselement.cpp b/src/kgraphviz/canvaselement.cpp
index 5e0301c..f10e83c 100644
--- a/src/kgraphviz/canvaselement.cpp
+++ b/src/kgraphviz/canvaselement.cpp
@@ -279,7 +279,7 @@ void CanvasElement::computeBoundingRect()
// dd << (*it).str;
// kDebug() << msg;
- if ((*it).renderop == "e" || (*it).renderop == "E")
+ if ((*it).renderop == 'e' || (*it).renderop == 'E')
{
qreal w = d->m_scaleX * (*it).integers[2] * 2;
qreal h = d->m_scaleY * (*it).integers[3] * 2;
@@ -288,7 +288,7 @@ void CanvasElement::computeBoundingRect()
d->m_boundingRect = QRectF(x - adjust,y - adjust, w + adjust, h + adjust);
// kDebug() << "'" << element()->id() << "' set rect for ellipse to " << rect;
}
- else if ((*it).renderop == "p" || (*it).renderop == "P")
+ else if ((*it).renderop == 'p' || (*it).renderop == 'P')
{
QPolygonF polygon((*it).integers[0]);
for (int i = 0; i < (*it).integers[0]; i++)
@@ -347,7 +347,7 @@ void CanvasElement::paint(QPainter* p,
{
p->save();
const DotRenderOp& dro = it.next();
- if ( dro.renderop == "B" )
+ if ( dro.renderop == 'B' )
{
uint lineWidth = 1;
QPen pen = p->pen();
@@ -374,7 +374,7 @@ void CanvasElement::paint(QPainter* p,
}
if (element()->attributes().contains("color"))
{
- kDebug() << "set edge color to " << QColor(element()->attributes()["color"]).name();
+// kDebug() << "set edge color to " << QColor(element()->attributes()["color"]).name();
lineColor = QColor(element()->attributes()["color"]);
}
@@ -440,7 +440,7 @@ void CanvasElement::paint(QPainter* p,
p->restore();
}
}
- else if (dro.renderop == "c")
+ else if (dro.renderop == 'c')
{
QColor c(dro.str.mid(0,7));
bool ok;
@@ -448,7 +448,7 @@ void CanvasElement::paint(QPainter* p,
p->setPen(c);
// kDebug() << "c" << dro.str.mid(0,7) << lineColor;
}
- else if (dro.renderop == "C")
+ else if (dro.renderop == 'C')
{
QColor c(dro.str.mid(0,7));
bool ok;
@@ -458,16 +458,16 @@ void CanvasElement::paint(QPainter* p,
c = c.lighter();
}
p->setBrush(c);
- kDebug() << "C" << dro.str.mid(0,7) << backColor;
+// kDebug() << "C" << dro.str.mid(0,7) << backColor;
}
- else if (dro.renderop == "e" || dro.renderop == "E")
+ else if (dro.renderop == 'e' || dro.renderop == 'E')
{
const qreal w = scaleX() * dro.integers[2] * 2;
const qreal h = scaleY() * dro.integers[3] * 2;
const qreal x = (marginX() + (dro.integers[0]/*%m_wdhcf*/)*scaleX()) - w/2;
const qreal y = ((gh() - dro.integers[1]/*%m_hdvcf*/)*scaleY() + marginY()) - h/2;
p->save();
- if (dro.renderop == "E" )
+ if (dro.renderop == 'E' )
{
p->setBrush(backColor);
}
@@ -491,7 +491,7 @@ void CanvasElement::paint(QPainter* p,
p->drawEllipse(rect);
p->restore();
}
- else if ( dro.renderop == "L" )
+ else if ( dro.renderop == 'L' )
{
// kDebug() << "Label";
QPolygonF points(dro.integers[0]);
@@ -522,7 +522,7 @@ void CanvasElement::paint(QPainter* p,
p->drawPolyline(points);
p->restore();
}
- else if (dro.renderop == "p" || dro.renderop == "P")
+ else if (dro.renderop == 'p' || dro.renderop == 'P')
{
// std::cerr << "Drawing polygon for node '"<<element()->id()<<"': ";
QPolygonF points(dro.integers[0]);
@@ -587,13 +587,13 @@ void CanvasElement::paint(QPainter* p,
}
}
}
- else if (dro.renderop == "F")
+ else if (dro.renderop == 'F')
{
element()->setFontName(dro.str);
element()->setFontSize(dro.integers[0]);
// kDebug() << "F" << element()->fontName() << element()->fontColor() << element()->fontSize();
}
- else if ( dro.renderop == "T" )
+ else if ( dro.renderop == 'T' )
{
const qreal stringWidthGoal = dro.integers[3] * scaleX();
int fontSize = element()->fontSize();
diff --git a/src/kgraphviz/dotgraphview.cpp b/src/kgraphviz/dotgraphview.cpp
index 1abb36d..b864f52 100644
--- a/src/kgraphviz/dotgraphview.cpp
+++ b/src/kgraphviz/dotgraphview.cpp
@@ -773,7 +773,7 @@ bool DotGraphView::displayGraph()
// kDebug() << "Adding graph render operations: " << d->m_graph->renderOperations().size();
foreach (const DotRenderOp& dro, d->m_graph->renderOperations())
{
- if ( dro.renderop == "T" )
+ if ( dro.renderop == 'T' )
{
// std::cerr << "Adding graph label '"<<dro.str<<"'" << std::endl;
const QString& str = dro.str;
diff --git a/src/kgraphviz/support/dotgrammar.cpp b/src/kgraphviz/support/dotgrammar.cpp
index 202f7b8..663bfca 100644
--- a/src/kgraphviz/support/dotgrammar.cpp
+++ b/src/kgraphviz/support/dotgrammar.cpp
@@ -461,12 +461,12 @@ void init_op()
void valid_op(char const* first, char const* last)
{
std::string s(first, last);
- renderop.renderop = QString::fromUtf8(therenderop.c_str());
+ renderop.renderop = therenderop.c_str()[0];
renderop.str = QString::fromUtf8(thestr.c_str());
// kDebug() << "Validating render operation '"<<QString::fromStdString(s)<<"': '"<<renderop.renderop<<"/"<<renderop.str<<"'";
renderopvec->push_back(renderop);
- renderop.renderop = "";
+ renderop.renderop = ' ';
renderop.integers = QList<int>();
renderop.str = "";
}
diff --git a/src/kgraphviz/support/dotrenderop.h b/src/kgraphviz/support/dotrenderop.h
index 74699c5..6e15b6a 100644
--- a/src/kgraphviz/support/dotrenderop.h
+++ b/src/kgraphviz/support/dotrenderop.h
@@ -19,9 +19,9 @@
#ifndef DOT_RENDEROP_H
#define DOT_RENDEROP_H
-#include <QString>
+#include <QChar>
#include <QList>
-#include <QTextStream>
+#include <QString>
/**
* members are interpreted in function of render operations definitions given at:
@@ -29,7 +29,7 @@
*/
struct DotRenderOp
{
- QString renderop;
+ QChar renderop;
QList< int > integers;
QString str;
};
More information about the kgraphviewer-devel
mailing list