diff options
Diffstat (limited to 'superkaramba/src/graph.cpp')
-rw-r--r-- | superkaramba/src/graph.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/superkaramba/src/graph.cpp b/superkaramba/src/graph.cpp new file mode 100644 index 0000000..c028aea --- /dev/null +++ b/superkaramba/src/graph.cpp @@ -0,0 +1,74 @@ +/*************************************************************************** + * Copyright (C) 2003 by Hans Karlsson * + * karlsson.h@home.se * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ + +#include "graph.h" +#include <qstring.h> + +Graph::Graph(karamba* k, int x, int y, int w, int h, int nbrPts): + Meter(k, x, y, w, h), lastValue(0) +{ + + nbrPoints = (nbrPts==0)? 50:nbrPts ; + ptPtr = 0; + values = new int[nbrPoints]; + for(int i = 0; i < nbrPoints; i++) + values[i] = 0; + minValue = 0; + maxValue = 100; +} + +Graph::~Graph() +{ + delete[] values; +} + +void Graph::setValue( long v) +{ + if( v > maxValue) + { + // maxValue = v; + v = maxValue; + } + if( v < minValue) + { + //minValue = v; + v = minValue; + } + lastValue = v; + values[ptPtr] = (int) (v / (maxValue + 0.0001) * getHeight()); + ptPtr = (ptPtr + 1) % nbrPoints; +} + +void Graph::setValue( QString v ) +{ + setValue((long)(v.toDouble() + 0.5)); +} + +void Graph::mUpdate(QPainter *p) +{ + if (hidden == 0) + { + double step = (getWidth() / (nbrPoints-1.001)); + double xPos = 0; + double nextXPos = 0; + p->setPen(color); + for (int i = 0; i < nbrPoints - 1 ; i ++) + { + nextXPos = xPos + step; + p->drawLine(getX() + (int)xPos, getY()+getHeight() - + (int) values[(ptPtr+i) % nbrPoints] , + getX() + (int)nextXPos, getY()+getHeight() - + (int) values[(ptPtr + i +1) % nbrPoints] ); + xPos = nextXPos; + } + } +} + +#include "graph.moc" |