author | drw <drw> | 2004-03-30 17:49:34 (UTC) |
---|---|---|
committer | drw <drw> | 2004-03-30 17:49:34 (UTC) |
commit | c74a24cbd04cb74d832908eb2b373aed7b3cea71 (patch) (side-by-side diff) | |
tree | 3ea474f4c8fa64495b8e0604f34ae5a1bd55ac56 /noncore/apps/checkbook/graph.cpp | |
parent | 2e5d236b647b1747dca61486ecdd85c8f3869487 (diff) | |
download | opie-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.cpp | 17 |
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 @@ -79,23 +79,23 @@ void Graph::initGraph() // Any common stuff here (titles, ???) switch ( data->graphType() ) { case GraphInfo::BarChart : { - drawBarChart( width(), height(), data->maxValue() ); + drawBarChart( width(), height(), data->maxValue(), data->minValue() ); } break; case GraphInfo::PieChart : { drawPieChart( width(), height(), data->totalValue() ); } }; } -void Graph::drawBarChart( int width, int height, float max ) +void Graph::drawBarChart( int width, int height, float max, float min ) { QPainter p( &graph ); // Try to set the font size smaller for text QFont f = font(); f.setPointSize( 8 ); @@ -108,21 +108,24 @@ void Graph::drawBarChart( int width, int height, float max ) int fh = fm.height(); int fw; 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; } } void Graph::drawPieChart( int width, int height, float sum ) |