summaryrefslogtreecommitdiff
path: root/noncore/apps/checkbook/graph.cpp
authordrw <drw>2004-03-30 17:49:34 (UTC)
committer drw <drw>2004-03-30 17:49:34 (UTC)
commitc74a24cbd04cb74d832908eb2b373aed7b3cea71 (patch) (side-by-side diff)
tree3ea474f4c8fa64495b8e0604f34ae5a1bd55ac56 /noncore/apps/checkbook/graph.cpp
parent2e5d236b647b1747dca61486ecdd85c8f3869487 (diff)
downloadopie-c74a24cbd04cb74d832908eb2b373aed7b3cea71.zip
opie-c74a24cbd04cb74d832908eb2b373aed7b3cea71.tar.gz
opie-c74a24cbd04cb74d832908eb2b373aed7b3cea71.tar.bz2
Fix drawing of account balance graph when balance < 0.0
Diffstat (limited to 'noncore/apps/checkbook/graph.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/checkbook/graph.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/noncore/apps/checkbook/graph.cpp b/noncore/apps/checkbook/graph.cpp
index 389972e..72da738 100644
--- a/noncore/apps/checkbook/graph.cpp
+++ b/noncore/apps/checkbook/graph.cpp
@@ -82,7 +82,7 @@ void Graph::initGraph()
{
case GraphInfo::BarChart :
{
- drawBarChart( width(), height(), data->maxValue() );
+ drawBarChart( width(), height(), data->maxValue(), data->minValue() );
}
break;
case GraphInfo::PieChart :
@@ -92,7 +92,7 @@ void Graph::initGraph()
};
}
-void Graph::drawBarChart( int width, int height, float max )
+void Graph::drawBarChart( int width, int height, float max, float min )
{
QPainter p( &graph );
@@ -111,15 +111,18 @@ void Graph::drawBarChart( int width, int height, float max )
QColor c( 0, 0, 255);
p.setBrush( c );
+ if ( min > 0 )
+ min = 0.0;
+
+ int bw = ( width - width / 4 ) / n;
+ int hoffset = int( ( height - height / 4 - 1 ) * ( min * -1 ) / ( max - min ) );
for (DataPointInfo *dp = data->firstDataPoint(); dp; dp = data->nextDataPoint() )
{
- int bw = ( width - width / 4 - x ) / ( n - i );
- int bh = int( ( height - height / 4 - 1 ) * dp->value() / max );
- p.drawRect( width / 8 + x, height - height / 8 - 1 - bh, bw, bh );
+ int bh = int( ( height - height / 4 - 1 ) * dp->value() / ( max - min ) );
+ p.drawRect( width / 8 + x, height - height / 8 - 1 - hoffset - bh, bw, bh );
fw = fm.width( dp->label() );
- p.drawText( width / 8 + x - fw / 2 + bw / 2, height - height / 8, fw,
+ p.drawText( width / 8 + x - fw / 2 + bw / 2, height - height / 8 - hoffset, fw,
fh + height / 8, AlignTop | AlignHCenter, dp->label() );
-// WordBreak | AlignTop | AlignHCenter, dp->label() );
i++;
x += bw;
}