23 #include <QtAlgorithms>
31 class KPlotObject::Private
55 : d( new Private( this ) )
128 return d->pointStyle;
210 d->pList.append( p );
219 if ( ( index < 0 ) || ( index >= d->pList.count() ) ) {
220 kWarning() <<
"KPlotObject::removePoint(): index " << index <<
" out of range!";
224 d->pList.removeAt( index );
229 qDeleteAll( d->pList );
237 if ( d->type &
Bars ) {
238 painter->setPen(
barPen() );
242 for (
int i=0; i<d->pList.size(); ++i ) {
243 if ( d->pList[i]->barWidth() == 0.0 ) {
244 if ( i<d->pList.size()-1 )
245 w = d->pList[i+1]->x() - d->pList[i]->x();
249 w = d->pList[i]->barWidth();
252 QPointF pp = d->pList[i]->position();
253 QPointF p1( pp.x() - 0.5*w, 0.0 );
254 QPointF p2( pp.x() + 0.5*w, pp.y() );
258 QRectF barRect = QRectF( sp1.x(), sp1.y(), sp2.x()-sp1.x(), sp2.y()-sp1.y() ).normalized();
259 painter->drawRect( barRect );
265 if ( d->type &
Lines ) {
268 QPointF Previous = QPointF();
274 if ( ! Previous.isNull() ) {
275 painter->drawLine( Previous, q );
289 if ( pw->
pixRect().contains( q.toPoint(), false ) ) {
290 double x1 = q.x() -
size();
291 double y1 = q.y() -
size();
292 QRectF qr = QRectF( x1, y1, 2*
size(), 2*
size() );
297 painter->setPen(
pen() );
298 painter->setBrush(
brush() );
302 painter->drawEllipse( qr );
306 painter->drawText( qr, Qt::AlignCenter, pp->
label().left(1) );
312 tri << QPointF( q.x() -
size(), q.y() +
size() )
313 << QPointF( q.x(), q.y() -
size() )
314 << QPointF( q.x() +
size(), q.y() +
size() );
315 painter->drawPolygon( tri );
320 painter->drawRect( qr );
326 pent << QPointF( q.x(), q.y() -
size() )
327 << QPointF( q.x() +
size(), q.y() - 0.309*
size() )
328 << QPointF( q.x() + 0.588*
size(), q.y() +
size() )
329 << QPointF( q.x() - 0.588*
size(), q.y() +
size() )
330 << QPointF( q.x() -
size(), q.y() - 0.309*
size() );
331 painter->drawPolygon( pent );
338 hex << QPointF( q.x(), q.y() +
size() )
339 << QPointF( q.x() +
size(), q.y() + 0.5*
size() )
340 << QPointF( q.x() +
size(), q.y() - 0.5*
size() )
341 << QPointF( q.x(), q.y() -
size() )
342 << QPointF( q.x() -
size(), q.y() + 0.5*
size() )
343 << QPointF( q.x() -
size(), q.y() - 0.5*
size() );
344 painter->drawPolygon( hex );
349 painter->drawLine( q, QPointF( q.x(), q.y() +
size() ) );
350 painter->drawLine( q, QPointF( q.x() +
size(), q.y() + 0.5*
size() ) );
351 painter->drawLine( q, QPointF( q.x() +
size(), q.y() - 0.5*
size() ) );
352 painter->drawLine( q, QPointF( q.x(), q.y() -
size() ) );
353 painter->drawLine( q, QPointF( q.x() -
size(), q.y() + 0.5*
size() ) );
354 painter->drawLine( q, QPointF( q.x() -
size(), q.y() - 0.5*
size() ) );
360 star << QPointF( q.x(), q.y() -
size() )
361 << QPointF( q.x() + 0.2245*
size(), q.y() - 0.309*
size() )
362 << QPointF( q.x() +
size(), q.y() - 0.309*
size() )
363 << QPointF( q.x() + 0.363*
size(), q.y() + 0.118*
size() )
364 << QPointF( q.x() + 0.588*
size(), q.y() +
size() )
365 << QPointF( q.x(), q.y() + 0.382*
size() )
366 << QPointF( q.x() - 0.588*
size(), q.y() +
size() )
367 << QPointF( q.x() - 0.363*
size(), q.y() + 0.118*
size() )
368 << QPointF( q.x() -
size(), q.y() - 0.309*
size() )
369 << QPointF( q.x() - 0.2245*
size(), q.y() - 0.309*
size() );
370 painter->drawPolygon( star );
386 if ( pw->
pixRect().contains(q,
false) && ! pp->
label().isEmpty() ) {