#include <KDChartBarDiagram.h>
Inheritance diagram for KDChart::BarDiagram:
Public Types | |
enum | BarType { Normal, Stacked, Percent, Rows } |
Public Member Functions | |
virtual void | addAxis (CartesianAxis *axis) |
Add the axis to the diagram. | |
bool | allowOverlappingDataValueTexts () const |
bool | antiAliasing () const |
virtual AttributesModel * | attributesModel () const |
Returns the AttributesModel, that is used by this diagram. | |
virtual KDChart::CartesianAxisList | axes () const |
BarAttributes | barAttributes (const QModelIndex &index) const |
BarAttributes | barAttributes (int column) const |
BarAttributes | barAttributes () const |
BarDiagram (QWidget *parent=0, CartesianCoordinatePlane *plane=0) | |
QBrush | brush (const QModelIndex &index) const |
Retrieve the brush to be used, for painting the datapoint at the given index in the model. | |
QBrush | brush (int dataset) const |
Retrieve the brush to be used for the given dataset. | |
QBrush | brush () const |
Retrieve the brush to be used for painting datapoints globally. | |
virtual BarDiagram * | clone () const |
bool | compare (const AbstractDiagram *other) const |
Returns true if both diagrams have the same settings. | |
bool | compare (const AbstractCartesianDiagram *other) const |
Returns true if both diagrams have the same settings. | |
AbstractCoordinatePlane * | coordinatePlane () const |
The coordinate plane associated with the diagram. | |
const QPair< QPointF, QPointF > | dataBoundaries () const |
Return the bottom left and top right data point, that the diagram will display (unless the grid adjusts these values). | |
virtual void | dataChanged (const QModelIndex &topLeft, const QModelIndex &bottomRight) |
[reimplemented] | |
QList< QBrush > | datasetBrushes () const |
The set of dataset brushes currently used, for use in legends, etc. | |
int | datasetDimension () const |
The dataset dimension of a diagram determines, how many value dimensions it expects each datapoint to have. | |
QStringList | datasetLabels () const |
The set of dataset labels currently displayed, for use in legends, etc. | |
QList< MarkerAttributes > | datasetMarkers () const |
The set of dataset markers currently used, for use in legends, etc. | |
QList< QPen > | datasetPens () const |
The set of dataset pens currently used, for use in legends, etc. | |
DataValueAttributes | dataValueAttributes (const QModelIndex &index) const |
Retrieve the DataValueAttributes for the given index. | |
DataValueAttributes | dataValueAttributes (int column) const |
Retrieve the DataValueAttributes for the given dataset. | |
DataValueAttributes | dataValueAttributes () const |
Retrieve the DataValueAttributes speficied globally. | |
virtual void | doItemsLayout () |
[reimplemented] | |
virtual int | horizontalOffset () const |
[reimplemented] | |
virtual QModelIndex | indexAt (const QPoint &point) const |
[reimplemented] | |
bool | isHidden (const QModelIndex &index) const |
Retrieve the hidden status for the given index. | |
bool | isHidden (int column) const |
Retrieve the hidden status for the given dataset. | |
bool | isHidden () const |
Retrieve the hidden status speficied globally. | |
virtual bool | isIndexHidden (const QModelIndex &index) const |
[reimplemented] | |
QStringList | itemRowLabels () const |
The set of item row labels currently displayed, for use in Abscissa axes, etc. | |
virtual void | layoutPlanes () |
virtual QModelIndex | moveCursor (CursorAction cursorAction, Qt::KeyboardModifiers modifiers) |
[reimplemented] | |
const int | numberOfAbscissaSegments () const |
[reimplemented] | |
const int | numberOfOrdinateSegments () const |
[reimplemented] | |
void | paintDataValueText (QPainter *painter, const QModelIndex &index, const QPointF &pos, double value) |
void | paintMarker (QPainter *painter, const QModelIndex &index, const QPointF &pos) |
virtual void | paintMarker (QPainter *painter, const MarkerAttributes &markerAttributes, const QBrush &brush, const QPen &, const QPointF &point, const QSizeF &size) |
QPen | pen (const QModelIndex &index) const |
Retrieve the pen to be used, for painting the datapoint at the given index in the model. | |
QPen | pen (int dataset) const |
Retrieve the pen to be used for the given dataset. | |
QPen | pen () const |
Retrieve the pen to be used for painting datapoints globally. | |
bool | percentMode () const |
virtual AbstractCartesianDiagram * | referenceDiagram () const |
virtual QPointF | referenceDiagramOffset () const |
void | resize (const QSizeF &area) |
Called by the widget's sizeEvent. | |
virtual void | scrollTo (const QModelIndex &index, ScrollHint hint=EnsureVisible) |
[reimplemented] | |
void | setAllowOverlappingDataValueTexts (bool allow) |
Set whether data value labels are allowed to overlap. | |
void | setAntiAliasing (bool enabled) |
Set whether anti-aliasing is to be used while rendering this diagram. | |
virtual void | setAttributesModel (AttributesModel *model) |
Associate an AttributesModel with this diagram. | |
void | setBarAttributes (const QModelIndex &index, const BarAttributes &a) |
void | setBarAttributes (int column, const BarAttributes &a) |
void | setBarAttributes (const BarAttributes &a) |
void | setBrush (const QBrush &brush) |
Set the brush to be used, for painting all datasets in the model. | |
void | setBrush (int dataset, const QBrush &brush) |
Set the brush to be used, for painting the given dataset. | |
void | setBrush (const QModelIndex &index, const QBrush &brush) |
Set the brush to be used, for painting the datapoint at the given index. | |
virtual void | setCoordinatePlane (AbstractCoordinatePlane *plane) |
Set the coordinate plane associated with the diagram. | |
void | setDatasetDimension (int dimension) |
Sets the dataset dimension of the diagram. | |
void | setDataValueAttributes (const DataValueAttributes &a) |
Set the DataValueAttributes for all datapoints in the model. | |
void | setDataValueAttributes (int dataset, const DataValueAttributes &a) |
Set the DataValueAttributes for the given dataset. | |
void | setDataValueAttributes (const QModelIndex &index, const DataValueAttributes &a) |
Set the DataValueAttributes for the given index. | |
void | setHidden (bool hidden) |
Hide (or unhide, resp.) all datapoints in the model. | |
void | setHidden (int column, bool hidden) |
Hide (or unhide, resp.) a dataset. | |
void | setHidden (const QModelIndex &index, bool hidden) |
Hide (or unhide, resp.) a data cell. | |
virtual void | setModel (QAbstractItemModel *model) |
Associate a model with the diagram. | |
void | setPen (const QPen &pen) |
Set the pen to be used, for painting all datasets in the model. | |
void | setPen (int dataset, const QPen &pen) |
Set the pen to be used, for painting the given dataset. | |
void | setPen (const QModelIndex &index, const QPen &pen) |
Set the pen to be used, for painting the datapoint at the given index. | |
void | setPercentMode (bool percent) |
virtual void | setReferenceDiagram (AbstractCartesianDiagram *diagram, const QPointF &offset=QPointF()) |
virtual void | setRootIndex (const QModelIndex &idx) |
Set the root index in the model, where the diagram starts referencing data for display. | |
virtual void | setSelection (const QRect &rect, QItemSelectionModel::SelectionFlags command) |
[reimplemented] | |
void | setThreeDBarAttributes (const QModelIndex &index, const ThreeDBarAttributes &a) |
void | setThreeDBarAttributes (int column, const ThreeDBarAttributes &a) |
void | setThreeDBarAttributes (const ThreeDBarAttributes &a) |
void | setType (BarType type) |
virtual void | takeAxis (CartesianAxis *axis) |
Removes the axis from the diagram, without deleting it. | |
ThreeDBarAttributes | threeDBarAttributes (const QModelIndex &index) const |
ThreeDBarAttributes | threeDBarAttributes (int column) const |
ThreeDBarAttributes | threeDBarAttributes () const |
BarType | type () const |
void | update () const |
void | useDefaultColors () |
Set the palette to be used, for painting datasets to the default palette. | |
void | useRainbowColors () |
Set the palette to be used, for painting datasets to the rainbow palette. | |
virtual bool | usesExternalAttributesModel () const |
Returns whether the diagram is using its own built-in attributes model or an attributes model that was set via setAttributesModel. | |
void | useSubduedColors () |
Set the palette to be used, for painting datasets to the subdued palette. | |
virtual int | verticalOffset () const |
[reimplemented] | |
virtual QRect | visualRect (const QModelIndex &index) const |
[reimplemented] | |
virtual QRegion | visualRegionForSelection (const QItemSelection &selection) const |
[reimplemented] | |
virtual | ~BarDiagram () |
Protected Member Functions | |
QModelIndex | attributesModelRootIndex () const |
const QPair< QPointF, QPointF > | calculateDataBoundaries () const |
[reimplemented] | |
virtual bool | checkInvariants (bool justReturnTheStatus=false) const |
QModelIndex | columnToIndex (int column) const |
void | dataHidden () |
This signal is emitted, when the hidden status of at least one data cell was (un)set. | |
void | modelsChanged () |
This signal is emitted, when either the model or the AttributesModel is replaced. | |
void | paint (PaintContext *paintContext) |
Draw the diagram contents to the rectangle and painter, that are passed in as part of the paint context. | |
virtual void | paintDataValueTexts (QPainter *painter) |
virtual void | paintMarkers (QPainter *painter) |
void | propertiesChanged () |
Emitted upon change of a property of the Diagram. | |
void | resizeEvent (QResizeEvent *) |
void | setAttributesModelRootIndex (const QModelIndex &) |
void | setDataBoundariesDirty () const |
virtual double | threeDItemDepth (int column) const |
virtual double | threeDItemDepth (const QModelIndex &index) const |
double | valueForCell (int row, int column) const |
Helper method, retrieving the data value (DisplayRole) for a given row and column. | |
Protected Attributes | |
Q_SIGNALS | __pad0__: void layoutChanged( AbstractDiagram* ) |
|
Definition at line 55 of file KDChartBarDiagram.h.
|
|
Definition at line 52 of file KDChartBarDiagram.cpp. Referenced by clone().
00052 : 00053 AbstractCartesianDiagram( new Private(), parent, plane ) 00054 { 00055 init(); 00056 } |
|
Definition at line 62 of file KDChartBarDiagram.cpp.
00063 { 00064 } |
|
Add the axis to the diagram. The diagram takes ownership of the axis and will delete it. To gain back ownership (e.g. for assigning the axis to another diagram) use the takeAxis method, before calling addAxis on the other diagram.
Definition at line 89 of file KDChartAbstractCartesianDiagram.cpp. References KDChart::AbstractAxis::createObserver(), d, and KDChart::AbstractCartesianDiagram::layoutPlanes().
00090 { 00091 if ( !d->axesList.contains( axis ) ) { 00092 d->axesList.append( axis ); 00093 axis->createObserver( this ); 00094 layoutPlanes(); 00095 } 00096 } |
|
Definition at line 446 of file KDChartAbstractDiagram.cpp. References d.
00450 { |
|
Definition at line 457 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::LineDiagram::paint().
00461 { |
|
Returns the AttributesModel, that is used by this diagram. By default each diagram owns its own AttributesModel, which should never be deleted. Only if a user-supplied AttributesModel has been set does the pointer returned here not belong to the diagram.
Definition at line 286 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::RingDiagram::paint(), KDChart::PolarDiagram::paint(), and setBarAttributes().
00287 { 00288 return d->attributesModel; 00289 } |
|
returns a QModelIndex pointing into the AttributesModel that corresponds to the root index of the diagram. Definition at line 310 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::LineDiagram::calculateDataBoundaries(), calculateDataBoundaries(), KDChart::LineDiagram::numberOfAbscissaSegments(), numberOfAbscissaSegments(), KDChart::LineDiagram::numberOfOrdinateSegments(), numberOfOrdinateSegments(), KDChart::LineDiagram::paint(), paint(), and KDChart::AbstractDiagram::valueForCell().
00316 { |
|
Definition at line 108 of file KDChartAbstractCartesianDiagram.cpp. References KDChart::CartesianAxisList, and d.
00109 { 00110 return d->axesList; 00111 } |
|
Definition at line 122 of file KDChartBarDiagram.cpp. References d.
|
|
Definition at line 114 of file KDChartBarDiagram.cpp. References d.
00115 { 00116 return qVariantValue<BarAttributes>( 00117 d->attributesModel->data( 00118 d->attributesModel->mapFromSource( columnToIndex( column ) ), 00119 KDChart::BarAttributesRole ) ); 00120 } |
|
Definition at line 108 of file KDChartBarDiagram.cpp. References d. Referenced by paint().
00109 { 00110 return qVariantValue<BarAttributes>( 00111 d->attributesModel->data( KDChart::BarAttributesRole ) ); 00112 } |
|
Retrieve the brush to be used, for painting the datapoint at the given index in the model.
Definition at line 816 of file KDChartAbstractDiagram.cpp.
00822 : QRect AbstractDiagram::visualRect(const QModelIndex &) const |
|
Retrieve the brush to be used for the given dataset. This will fall back automatically to what was set at model level, if there are no dataset specific settings.
Definition at line 808 of file KDChartAbstractDiagram.cpp.
00815 { |
|
Retrieve the brush to be used for painting datapoints globally. This will fall back automatically to the default settings, if there are no specific settings.
Definition at line 802 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::PieDiagram::paint(), KDChart::LineDiagram::paint(), and KDChart::AbstractDiagram::paintMarker().
00807 { |
|
[reimplemented]
Implements KDChart::AbstractDiagram. Definition at line 198 of file KDChartBarDiagram.cpp. References KDChart::AbstractDiagram::attributesModelRootIndex(), KDChart::AbstractDiagram::checkInvariants(), d, and type().
00199 { 00200 if ( !checkInvariants(true) ) return QPair<QPointF, QPointF>( QPointF( 0, 0 ), QPointF( 0, 0 ) ); 00201 const int rowCount = d->attributesModel->rowCount(attributesModelRootIndex()); 00202 const int colCount = d->attributesModel->columnCount(attributesModelRootIndex()); 00203 00204 double xMin = 0; 00205 double xMax = rowCount; 00206 double yMin = 0, yMax = 0; 00207 //double maxThreeDDepth = 0.0; 00208 00209 00210 // calculate boundaries for different line types Normal - Stacked - Percent - Default Normal 00211 switch ( type() ){ 00212 case BarDiagram::Normal: 00213 { 00214 bool bStarting = true; 00215 for ( int i=0; i<colCount; ++i ) { 00216 for ( int j=0; j< rowCount; ++j ) { 00217 const double value = d->attributesModel->data( d->attributesModel->index( j, i, attributesModelRootIndex() ) ).toDouble(); 00218 // this is always true yMin can be 0 in case all values 00219 // are the same 00220 // same for yMax it can be zero if all values are negative 00221 if( bStarting ){ 00222 yMin = value; 00223 yMax = value; 00224 bStarting = false; 00225 }else{ 00226 yMin = qMin( yMin, value ); 00227 yMax = qMax( yMax, value ); 00228 } 00229 } 00230 } 00231 } 00232 break; 00233 case BarDiagram::Stacked: 00234 { 00235 bool bStarting = true; 00236 for ( int j=0; j< rowCount; ++j ) { 00237 // calculate sum of values per column - Find out stacked Min/Max 00238 double stackedValues = 0; 00239 for ( int i=0; i<colCount ; ++i ) { 00240 QModelIndex idx = model()->index( j, i, rootIndex() ); 00241 stackedValues += model()->data( idx ).toDouble(); 00242 // this is always true yMin can be 0 in case all values 00243 // are the same 00244 // same for yMax it can be zero if all values are negative 00245 if( bStarting ){ 00246 yMin = stackedValues; 00247 yMax = stackedValues; 00248 bStarting = false; 00249 }else{ 00250 yMin = qMin( yMin, stackedValues ); 00251 yMax = qMax( yMax, stackedValues ); 00252 } 00253 } 00254 } 00255 } 00256 break; 00257 case BarDiagram::Percent: 00258 { 00259 for ( int i=0; i<colCount; ++i ) { 00260 for ( int j=0; j< rowCount; ++j ) { 00261 // Ordinate should begin at 0 the max value being the 100% pos 00262 QModelIndex idx = model()->index( j, i, rootIndex() ); 00263 // only positive values are handled 00264 double value = model()->data( idx ).toDouble(); 00265 if ( value > 0 ) 00266 yMax = qMax( yMax, value ); 00267 } 00268 } 00269 } 00270 break; 00271 case BarDiagram::Rows: 00272 { 00273 qDebug()<< "KDChartBarDiagram::calculateDataBoundaries" 00274 << "Sorry Type Rows not implemented yet"; 00275 break; 00276 } 00277 00278 00279 default: 00280 Q_ASSERT_X ( false, "calculateDataBoundaries()", 00281 "Type item does not match a defined bar chart Type." ); 00282 } 00283 00284 // special cases 00285 if ( yMax == yMin ) { 00286 if ( yMin == 0.0 ) 00287 yMax = 0.1; //we need at list a range 00288 else 00289 yMax = 0.0; // they are the same but negative 00290 } 00291 QPointF bottomLeft ( QPointF( xMin, yMin ) ); 00292 QPointF topRight ( QPointF( xMax, yMax ) ); 00293 00294 //qDebug() << "BarDiagram::calculateDataBoundaries () returns ( " << bottomLeft << topRight <<")"; 00295 return QPair<QPointF, QPointF> ( bottomLeft, topRight ); 00296 } |
|
Definition at line 930 of file KDChartAbstractDiagram.cpp. References KDChart::AbstractDiagram::coordinatePlane(). Referenced by KDChart::RingDiagram::calculateDataBoundaries(), KDChart::PolarDiagram::calculateDataBoundaries(), KDChart::PieDiagram::calculateDataBoundaries(), KDChart::LineDiagram::calculateDataBoundaries(), calculateDataBoundaries(), KDChart::RingDiagram::paint(), KDChart::PolarDiagram::paint(), KDChart::PieDiagram::paint(), KDChart::LineDiagram::paint(), paint(), and KDChart::AbstractDiagram::paintMarker().
00930 { 00931 Q_ASSERT_X ( model(), "AbstractDiagram::checkInvariants()", 00932 "There is no usable model set, for the diagram." ); 00933 00934 Q_ASSERT_X ( coordinatePlane(), "AbstractDiagram::checkInvariants()", 00935 "There is no usable coordinate plane set, for the diagram." ); 00936 } 00937 return model() && coordinatePlane(); 00938 } 00939 00940 int AbstractDiagram::datasetDimension( ) const |
|
Definition at line 66 of file KDChartBarDiagram.cpp. References BarDiagram(), and d.
00067 { 00068 return new BarDiagram( new Private( *d ) ); 00069 } |
|
Definition at line 317 of file KDChartAbstractDiagram.cpp.
00323 { |
|
Returns true if both diagrams have the same settings.
Definition at line 135 of file KDChartAbstractDiagram.cpp.
00136 { 00137 if( other == this ) return true; 00138 if( ! other ){ 00139 //qDebug() << "AbstractDiagram::compare() cannot compare to Null pointer"; 00140 return false; 00141 } 00142 /* 00143 qDebug() << "\n AbstractDiagram::compare() QAbstractScrollArea:"; 00144 // compare QAbstractScrollArea properties 00145 qDebug() << 00146 ((horizontalScrollBarPolicy() == other->horizontalScrollBarPolicy()) && 00147 (verticalScrollBarPolicy() == other->verticalScrollBarPolicy())); 00148 qDebug() << "AbstractDiagram::compare() QFrame:"; 00149 // compare QFrame properties 00150 qDebug() << 00151 ((frameShadow() == other->frameShadow()) && 00152 (frameShape() == other->frameShape()) && 00153 (frameWidth() == other->frameWidth()) && 00154 (lineWidth() == other->lineWidth()) && 00155 (midLineWidth() == other->midLineWidth())); 00156 qDebug() << "AbstractDiagram::compare() QAbstractItemView:"; 00157 // compare QAbstractItemView properties 00158 qDebug() << 00159 ((alternatingRowColors() == other->alternatingRowColors()) && 00160 (hasAutoScroll() == other->hasAutoScroll()) && 00161 #if QT_VERSION > 0x040199 00162 (dragDropMode() == other->dragDropMode()) && 00163 (dragDropOverwriteMode() == other->dragDropOverwriteMode()) && 00164 (horizontalScrollMode() == other->horizontalScrollMode ()) && 00165 (verticalScrollMode() == other->verticalScrollMode()) && 00166 #endif 00167 (dragEnabled() == other->dragEnabled()) && 00168 (editTriggers() == other->editTriggers()) && 00169 (iconSize() == other->iconSize()) && 00170 (selectionBehavior() == other->selectionBehavior()) && 00171 (selectionMode() == other->selectionMode()) && 00172 (showDropIndicator() == other->showDropIndicator()) && 00173 (tabKeyNavigation() == other->tabKeyNavigation()) && 00174 (textElideMode() == other->textElideMode())); 00175 qDebug() << "AbstractDiagram::compare() AttributesModel: "; 00176 // compare all of the properties stored in the attributes model 00177 qDebug() << attributesModel()->compare( other->attributesModel() ); 00178 qDebug() << "AbstractDiagram::compare() own:"; 00179 // compare own properties 00180 qDebug() << 00181 ((rootIndex().column() == other->rootIndex().column()) && 00182 (rootIndex().row() == other->rootIndex().row()) && 00183 (allowOverlappingDataValueTexts() == other->allowOverlappingDataValueTexts()) && 00184 (antiAliasing() == other->antiAliasing()) && 00185 (percentMode() == other->percentMode()) && 00186 (datasetDimension() == other->datasetDimension())); 00187 */ 00188 return // compare QAbstractScrollArea properties 00189 (horizontalScrollBarPolicy() == other->horizontalScrollBarPolicy()) && 00190 (verticalScrollBarPolicy() == other->verticalScrollBarPolicy()) && 00191 // compare QFrame properties 00192 (frameShadow() == other->frameShadow()) && 00193 (frameShape() == other->frameShape()) && 00194 (frameWidth() == other->frameWidth()) && 00195 (lineWidth() == other->lineWidth()) && 00196 (midLineWidth() == other->midLineWidth()) && 00197 // compare QAbstractItemView properties 00198 (alternatingRowColors() == other->alternatingRowColors()) && 00199 (hasAutoScroll() == other->hasAutoScroll()) && 00200 #if QT_VERSION > 0x040199 00201 (dragDropMode() == other->dragDropMode()) && 00202 (dragDropOverwriteMode() == other->dragDropOverwriteMode()) && 00203 (horizontalScrollMode() == other->horizontalScrollMode ()) && 00204 (verticalScrollMode() == other->verticalScrollMode()) && 00205 #endif 00206 (dragEnabled() == other->dragEnabled()) && 00207 (editTriggers() == other->editTriggers()) && 00208 (iconSize() == other->iconSize()) && 00209 (selectionBehavior() == other->selectionBehavior()) && 00210 (selectionMode() == other->selectionMode()) && 00211 (showDropIndicator() == other->showDropIndicator()) && 00212 (tabKeyNavigation() == other->tabKeyNavigation()) && 00213 (textElideMode() == other->textElideMode()) && 00214 // compare all of the properties stored in the attributes model 00215 attributesModel()->compare( other->attributesModel() ) && 00216 // compare own properties 00217 (rootIndex().column() == other->rootIndex().column()) && 00218 (rootIndex().row() == other->rootIndex().row()) && 00219 (allowOverlappingDataValueTexts() == other->allowOverlappingDataValueTexts()) && 00220 (antiAliasing() == other->antiAliasing()) && 00221 (percentMode() == other->percentMode()) && 00222 (datasetDimension() == other->datasetDimension()); 00223 } |
|
Returns true if both diagrams have the same settings.
Definition at line 52 of file KDChartAbstractCartesianDiagram.cpp.
00053 { 00054 if( other == this ) return true; 00055 if( ! other ){ 00056 //qDebug() << "AbstractCartesianDiagram::compare() cannot compare to Null pointer"; 00057 return false; 00058 } 00059 /* 00060 qDebug() << "\n AbstractCartesianDiagram::compare():"; 00061 // compare own properties 00062 qDebug() << 00063 ((referenceDiagram() == other->referenceDiagram()) && 00064 ((! referenceDiagram()) || (referenceDiagramOffset() == other->referenceDiagramOffset()))); 00065 */ 00066 return // compare the base class 00067 ( static_cast<const AbstractDiagram*>(this)->compare( other ) ) && 00068 // compare own properties 00069 (referenceDiagram() == other->referenceDiagram()) && 00070 ((! referenceDiagram()) || (referenceDiagramOffset() == other->referenceDiagramOffset())); 00071 } |
|
The coordinate plane associated with the diagram. This determines how coordinates in value space are mapped into pixel space. By default this is a CartesianCoordinatePlane.
Definition at line 226 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::AbstractDiagram::checkInvariants(), KDChart::AbstractCartesianDiagram::layoutPlanes(), KDChart::PolarDiagram::paint(), KDChart::LineDiagram::paint(), paint(), KDChart::AbstractPolarDiagram::polarCoordinatePlane(), and KDChart::AbstractCartesianDiagram::setCoordinatePlane().
00227 { 00228 return d->plane; 00229 } |
|
Return the bottom left and top right data point, that the diagram will display (unless the grid adjusts these values). This method returns a chached result of calculations done by calculateDataBoundaries. Classes derived from AbstractDiagram must implement the calculateDataBoundaries function, to specify their own way of calculating the data boundaries. If derived classes want to force recalculation of the data boundaries, they can call setDataBoundariesDirty() Returned value is in diagram coordinates. Definition at line 231 of file KDChartAbstractDiagram.cpp. References KDChart::AbstractDiagram::calculateDataBoundaries(), and d. Referenced by KDChart::CartesianCoordinatePlane::getRawDataBoundingRectFromDiagrams(), KDChart::PolarCoordinatePlane::layoutDiagrams(), KDChart::LineDiagram::paint(), and paint().
00232 { 00233 if( d->databoundariesDirty ){ 00234 d->databoundaries = calculateDataBoundaries (); 00235 d->databoundariesDirty = false; 00236 } 00237 return d->databoundaries; 00238 } |
|
[reimplemented]
Definition at line 338 of file KDChartAbstractDiagram.cpp. References d.
00338 { 00339 // We are still too dumb to do intelligent updates... 00340 d->databoundariesDirty = true; 00341 scheduleDelayedItemsLayout(); 00342 } 00343 00344 |
|
This signal is emitted, when the hidden status of at least one data cell was (un)set.
|
|
The set of dataset brushes currently used, for use in legends, etc.
Definition at line 894 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::Legend::buildLegend(), KDChart::Legend::datasetCount(), and KDChart::Legend::setBrushesFromDiagram().
00896 { 00897 QBrush brush = qVariantValue<QBrush>( attributesModel()->headerData( i, Qt::Vertical, DatasetBrushRole ) ); 00898 ret << brush; 00899 } 00900 00901 return ret; 00902 } 00903 00904 QList<QPen> AbstractDiagram::datasetPens() const |
|
The dataset dimension of a diagram determines, how many value dimensions it expects each datapoint to have. For each dimension it will expect one column of values in the model. If the dimensionality is 1, automatic values will be used for the abscissa. For example a diagram with the default dimension of 1, will have one column per datapoint (the y values) and will use automatic values for the x axis (1, 2, 3, ... n). If the dimension is 2, the diagram will use the first, (and the third, fifth, etc) columns as X values, and the second, (and the fourth, sixth, etc) column as Y values.
Definition at line 942 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::LineDiagram::calculateDataBoundaries(), KDChart::LineDiagram::getCellValues(), KDChart::CartesianCoordinatePlane::getDataDimensionsList(), KDChart::LineDiagram::paint(), and KDChart::LineDiagram::setType().
00946 { |
|
The set of dataset labels currently displayed, for use in legends, etc.
Definition at line 882 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::Legend::buildLegend(), and KDChart::Legend::datasetCount().
00883 : " << attributesModel()->columnCount(attributesModelRootIndex()) << "entries"; 00884 const int columnCount = attributesModel()->columnCount(attributesModelRootIndex()); 00885 for( int i = datasetDimension()-1; i < columnCount; i += datasetDimension() ){ 00886 //qDebug() << "dataset label: " << attributesModel()->headerData( i, Qt::Horizontal, Qt::DisplayRole ).toString(); 00887 ret << attributesModel()->headerData( i, Qt::Horizontal, Qt::DisplayRole ).toString(); 00888 } 00889 return ret; 00890 } 00891 00892 QList<QBrush> AbstractDiagram::datasetBrushes() const |
|
The set of dataset markers currently used, for use in legends, etc.
Definition at line 917 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::Legend::buildLegend().
00919 { 00920 DataValueAttributes a = 00921 qVariantValue<DataValueAttributes>( attributesModel()->headerData( i, Qt::Vertical, DataValueLabelAttributesRole ) ); 00922 const MarkerAttributes &ma = a.markerAttributes(); 00923 ret << ma; 00924 } 00925 return ret; 00926 } 00927 00928 bool AbstractDiagram::checkInvariants( bool justReturnTheStatus ) const |
|
The set of dataset pens currently used, for use in legends, etc.
Definition at line 906 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::Legend::buildLegend().
00908 { 00909 QPen pen = qVariantValue<QPen>( attributesModel()->headerData( i, Qt::Vertical, DatasetPenRole ) ); 00910 ret << pen; 00911 } 00912 return ret; 00913 } 00914 00915 QList<MarkerAttributes> AbstractDiagram::datasetMarkers() const |
|
Retrieve the DataValueAttributes for the given index. This will fall back automatically to what was set at dataset or model level, if there are no datapoint specific settings.
Definition at line 427 of file KDChartAbstractDiagram.cpp.
00433 { |
|
Retrieve the DataValueAttributes for the given dataset. This will fall back automatically to what was set at model level, if there are no dataset specific settings.
Definition at line 420 of file KDChartAbstractDiagram.cpp.
00426 { |
|
Retrieve the DataValueAttributes speficied globally. This will fall back automatically to the default settings, if there are no specific settings.
Definition at line 414 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::AbstractDiagram::paintDataValueText(), and KDChart::AbstractDiagram::paintMarker().
00419 { |
|
[reimplemented]
Definition at line 329 of file KDChartAbstractDiagram.cpp. References d, and KDChart::AbstractDiagram::update().
00329 { 00330 d->plane->layoutDiagrams(); 00331 update(); 00332 } 00333 QAbstractItemView::doItemsLayout(); 00334 } 00335 00336 void AbstractDiagram::dataChanged( const QModelIndex &topLeft, |
|
[reimplemented]
Definition at line 839 of file KDChartAbstractDiagram.cpp.
00841 { return 0; }
|
|
[reimplemented]
Definition at line 833 of file KDChartAbstractDiagram.cpp.
00835 { return QModelIndex(); }
|
|
Retrieve the hidden status for the given index. This will fall back automatically to what was set at dataset or diagram level, if there are no datapoint specific settings.
Definition at line 386 of file KDChartAbstractDiagram.cpp. |
|
Retrieve the hidden status for the given dataset. This will fall back automatically to what was set at diagram level, if there are no dataset specific settings.
Definition at line 379 of file KDChartAbstractDiagram.cpp.
00385 { |
|
Retrieve the hidden status speficied globally. This will fall back automatically to the default settings ( = not hidden), if there are no specific settings.
Definition at line 373 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::Legend::buildLegend(), KDChart::LineDiagram::paint(), and KDChart::LineDiagram::valueForCellTesting().
00378 { |
|
[reimplemented]
Definition at line 845 of file KDChartAbstractDiagram.cpp.
00847 {} |
|
The set of item row labels currently displayed, for use in Abscissa axes, etc.
Definition at line 870 of file KDChartAbstractDiagram.cpp.
00871 : " << attributesModel()->rowCount(attributesModelRootIndex()) << "entries"; 00872 const int rowCount = attributesModel()->rowCount(attributesModelRootIndex()); 00873 for( int i = 0; i < rowCount; ++i ){ 00874 //qDebug() << "item row label: " << attributesModel()->headerData( i, Qt::Vertical, Qt::DisplayRole ).toString(); 00875 ret << attributesModel()->headerData( i, Qt::Vertical, Qt::DisplayRole ).toString(); 00876 } 00877 return ret; 00878 } 00879 00880 QStringList AbstractDiagram::datasetLabels() const |
|
Definition at line 113 of file KDChartAbstractCartesianDiagram.cpp. References KDChart::AbstractDiagram::coordinatePlane(), and KDChart::AbstractCoordinatePlane::layoutPlanes(). Referenced by KDChart::AbstractCartesianDiagram::addAxis(), and KDChart::AbstractCartesianDiagram::takeAxis().
00114 { 00115 //qDebug() << "KDChart::AbstractCartesianDiagram::layoutPlanes()"; 00116 AbstractCoordinatePlane* plane = coordinatePlane(); 00117 if( plane ){ 00118 plane->layoutPlanes(); 00119 //qDebug() << "KDChart::AbstractCartesianDiagram::layoutPlanes() OK"; 00120 } 00121 } |
|
This signal is emitted, when either the model or the AttributesModel is replaced.
Referenced by KDChart::AbstractDiagram::setAttributesModel(), and KDChart::AbstractDiagram::setModel(). |
|
[reimplemented]
Definition at line 836 of file KDChartAbstractDiagram.cpp.
00838 { return 0; }
|
|
[reimplemented]
Implements KDChart::AbstractCartesianDiagram. Definition at line 674 of file KDChartBarDiagram.cpp. References KDChart::AbstractDiagram::attributesModelRootIndex(), and d.
00675 { 00676 return d->attributesModel->rowCount(attributesModelRootIndex()); 00677 } |
|
[reimplemented]
Implements KDChart::AbstractCartesianDiagram. Definition at line 679 of file KDChartBarDiagram.cpp. References KDChart::AbstractDiagram::attributesModelRootIndex(), and d.
00680 { 00681 return d->attributesModel->columnCount(attributesModelRootIndex()); 00682 } |
|
Draw the diagram contents to the rectangle and painter, that are passed in as part of the paint context.
Implements KDChart::AbstractDiagram. Definition at line 341 of file KDChartBarDiagram.cpp. References KDChart::AbstractDiagram::attributesModelRootIndex(), barAttributes(), KDChart::AbstractDiagram::checkInvariants(), KDChart::AbstractDiagram::coordinatePlane(), d, KDChart::AbstractDiagram::dataBoundaries(), KDChart::AbstractThreeDAttributes::depth(), KDChart::BarAttributes::fixedBarWidth(), KDChart::BarAttributes::fixedDataValueGap(), KDChart::BarAttributes::fixedValueBlockGap(), KDChart::AbstractThreeDAttributes::isEnabled(), KDChart::PaintContext::rectangle(), threeDBarAttributes(), KDChart::CartesianCoordinatePlane::translate(), type(), KDChart::BarAttributes::useFixedBarWidth(), KDChart::BarAttributes::useFixedDataValueGap(), and KDChart::BarAttributes::useFixedValueBlockGap().
00342 { 00343 // note: Not having any data model assigned is no bug 00344 // but we can not draw a diagram then either. 00345 if ( !checkInvariants(true) ) 00346 return; 00347 00348 // Calculate width 00349 QPointF boundLeft, boundRight; 00350 QPair<QPointF,QPointF> boundaries = dataBoundaries(); 00351 if( !AbstractGrid::isBoundariesValid(boundaries) ) return; 00352 00353 CartesianCoordinatePlane* plane = dynamic_cast<KDChart::CartesianCoordinatePlane*>( coordinatePlane() ); 00354 if( ! plane ) return; 00355 00356 boundLeft = plane->translate( boundaries.first ); 00357 boundRight = plane->translate( boundaries.second ); 00358 double width = boundRight.x() - boundLeft.x(); 00359 //calculates and stores the values 00360 const int rowCount = d->attributesModel->rowCount(attributesModelRootIndex()); 00361 const int colCount = d->attributesModel->columnCount(attributesModelRootIndex()); 00362 DataValueTextInfoList list; 00363 BarAttributes ba = barAttributes( model()->index( 0, 0, rootIndex() ) ); 00364 double barWidth = 0; 00365 double maxDepth = 0; 00366 double spaceBetweenBars = 0; 00367 double spaceBetweenGroups = 0; 00368 double groupWidth = /*ctx->rectangle().width() / ( rowCount + 2 )*/ width/ (rowCount + 2); 00369 00370 00371 if ( ba.useFixedBarWidth() ) { 00372 barWidth = ba.fixedBarWidth(); 00373 groupWidth += barWidth; 00374 00375 // Pending Michel set a min and max value for the groupWidth related to the area.width 00376 // FixMe 00377 if ( groupWidth < 0 ) 00378 groupWidth = 0; 00379 00380 if ( groupWidth * rowCount > ctx->rectangle().width() ) 00381 groupWidth = ctx->rectangle().width() / rowCount; 00382 } 00383 00384 // maxLimit: allow the space between bars to be larger until area.width() is covered by the groups. 00385 double maxLimit = rowCount * (groupWidth + ((colCount-1) * ba.fixedDataValueGap()) ); 00386 00387 //Pending Michel: FixMe 00388 if ( ba.useFixedDataValueGap() ) { 00389 if ( ctx->rectangle().width() > maxLimit ) 00390 spaceBetweenBars += ba.fixedDataValueGap(); 00391 else 00392 spaceBetweenBars = ((ctx->rectangle().width()/rowCount) - groupWidth)/(colCount-1); 00393 } 00394 00395 //Pending Michel: FixMe 00396 if ( ba.useFixedValueBlockGap() ) 00397 spaceBetweenGroups += ba.fixedValueBlockGap(); 00398 00399 calculateValueAndGapWidths( rowCount, colCount,groupWidth, 00400 barWidth, spaceBetweenBars, spaceBetweenGroups ); 00401 00402 // paint different bar types: Normal - Stacked - Percent 00403 switch ( type() ) 00404 { 00405 case BarDiagram::Normal: 00406 { 00407 // we paint the bars for all series next to each other, then move to the next value 00408 for ( int i=0; i<rowCount; ++i ) { 00409 double offset = -groupWidth/2 + spaceBetweenGroups/2; 00410 // case fixed data value gap - handles max and min limits as well 00411 if ( ba.useFixedDataValueGap() ) { 00412 if ( spaceBetweenBars > 0 ) { 00413 if ( ctx->rectangle().width() > maxLimit ) 00414 offset -= ba.fixedDataValueGap(); 00415 else 00416 offset -= ((ctx->rectangle().width()/rowCount) - groupWidth)/(colCount-1); 00417 00418 } else { 00419 //allow reducing the gap until the bars are displayed next to each other - null gap 00420 offset += barWidth/2; 00421 } 00422 } 00423 00424 for ( int j=0; j< colCount; ++j ) { 00425 // paint one group 00426 const qreal value = d->attributesModel->data( d->attributesModel->index( i, j, attributesModelRootIndex() ) ).toDouble(); 00427 QPointF topPoint = plane->translate( QPointF( i + 0.5, value ) ); 00428 QPointF bottomPoint = plane->translate( QPointF( i, 0 ) ); 00429 const double barHeight = bottomPoint.y() - topPoint.y(); 00430 topPoint.setX( topPoint.x() + offset ); 00431 00432 const QModelIndex index = model()->index( i, j, rootIndex() ); 00433 00434 //PENDING Michel: FIXME barWidth 00435 const QRectF rect( topPoint, QSizeF( barWidth, barHeight ) ); 00436 d->appendDataValueTextInfoToList( this, list, index, PositionPoints( rect ), 00437 Position::NorthWest, Position::SouthEast, 00438 value ); 00439 paintBars( ctx, index, rect, maxDepth ); 00440 00441 offset += barWidth + spaceBetweenBars; 00442 } 00443 } 00444 } 00445 break; 00446 case BarDiagram::Stacked: 00447 { 00448 for ( int i = 0; i<colCount; ++i ) { 00449 double offset = spaceBetweenGroups; 00450 for ( int j = 0; j< rowCount; ++j ) { 00451 QModelIndex index = model()->index( j, i, rootIndex() ); 00452 ThreeDBarAttributes threeDAttrs = threeDBarAttributes( index ); 00453 double value = 0, stackedValues = 0; 00454 QPointF point, previousPoint; 00455 00456 if ( threeDAttrs.isEnabled() ) { 00457 if ( barWidth > 0 ) 00458 barWidth = (width - ((offset+(threeDAttrs.depth()))*rowCount))/ rowCount; 00459 if ( barWidth <= 0 ) { 00460 barWidth = 0; 00461 maxDepth = offset - (width/rowCount); 00462 } 00463 } else 00464 barWidth = (ctx->rectangle().width() - (offset*rowCount))/ rowCount ; 00465 00466 value = model()->data( index ).toDouble(); 00467 for ( int k = i; k >= 0 ; --k ) 00468 stackedValues += model()->data( model()->index( j, k, rootIndex() ) ).toDouble(); 00469 point = plane->translate( QPointF( j, stackedValues ) ); 00470 point.setX( point.x() + offset/2 ); 00471 previousPoint = plane->translate( QPointF( j, stackedValues - value ) ); 00472 const double barHeight = previousPoint.y() - point.y(); 00473 00474 const QRectF rect( point, QSizeF( barWidth , barHeight ) ); 00475 d->appendDataValueTextInfoToList( this, list, index, PositionPoints( rect ), 00476 Position::NorthWest, Position::SouthEast, 00477 value ); 00478 paintBars( ctx, index, rect, maxDepth ); 00479 } 00480 00481 } 00482 } 00483 break; 00484 case BarDiagram::Percent: 00485 { 00486 double maxValue = 100; // always 100 % 00487 double sumValues = 0; 00488 QVector <double > sumValuesVector; 00489 00490 //calculate sum of values for each column and store 00491 for ( int j=0; j<rowCount; ++j ) { 00492 for ( int i=0; i<colCount; ++i ) { 00493 double tmpValue = model()->data( model()->index( j, i, rootIndex() ) ).toDouble(); 00494 if ( tmpValue > 0 ) 00495 sumValues += tmpValue; 00496 if ( i == colCount-1 ) { 00497 sumValuesVector << sumValues ; 00498 sumValues = 0; 00499 } 00500 } 00501 } 00502 00503 // calculate stacked percent value 00504 for ( int i = 0; i<colCount; ++i ) { 00505 double offset = spaceBetweenGroups; 00506 for ( int j=0; j<rowCount ; ++j ) { 00507 double value = 0, stackedValues = 0; 00508 QPointF point, previousPoint; 00509 QModelIndex index = model()->index( j, i, rootIndex() ); 00510 ThreeDBarAttributes threeDAttrs = threeDBarAttributes( index ); 00511 00512 if ( threeDAttrs.isEnabled() ){ 00513 if ( barWidth > 0 ) 00514 barWidth = (width - ((offset+(threeDAttrs.depth()))*rowCount))/ rowCount; 00515 if ( barWidth <= 0 ) { 00516 barWidth = 0; 00517 maxDepth = offset - ( width/rowCount); 00518 } 00519 }else{ 00520 barWidth = (ctx->rectangle().width() - (offset*rowCount))/ rowCount; 00521 } 00522 00523 value = model()->data( index ).toDouble(); 00524 00525 // calculate stacked percent value 00526 // we only take in account positives values for now. 00527 for ( int k = i; k >= 0 ; --k ) { 00528 double val = model()->data( model()->index( j, k, rootIndex() ) ).toDouble(); 00529 if ( val > 0) 00530 stackedValues += val; 00531 } 00532 00533 if ( sumValuesVector.at( j ) != 0 && value > 0 ) { 00534 point = plane->translate( QPointF( j, stackedValues/sumValuesVector.at(j)* maxValue ) ); 00535 00536 point.setX( point.x() + offset/2 ); 00537 00538 previousPoint = plane->translate( QPointF( j, (stackedValues - value)/sumValuesVector.at(j)* maxValue ) ); 00539 } 00540 const double barHeight = previousPoint.y() - point.y(); 00541 00542 const QRectF rect( point, QSizeF( barWidth, barHeight ) ); 00543 d->appendDataValueTextInfoToList( this, list, index, PositionPoints( rect ), 00544 Position::NorthWest, Position::SouthEast, 00545 value ); 00546 paintBars( ctx, index, rect, maxDepth ); 00547 00548 } 00549 } 00550 } 00551 break; 00552 default: 00553 Q_ASSERT_X ( false, "paint()", 00554 "Type item does not match a defined bar chart Type." ); 00555 } 00556 00557 // paint all data value texts, but no point markers 00558 d->paintDataValueTextsAndMarkers( this, ctx, list, false ); 00559 } |
|
Definition at line 474 of file KDChartAbstractDiagram.cpp. References KDChart::RelativePosition::alignment(), KDChart::TextAttributes::calculatedFont(), d, KDChart::DataValueAttributes::dataLabel(), KDChart::AbstractDiagram::dataValueAttributes(), KDChart::DataValueAttributes::decimalDigits(), KDChart::TextAttributes::isVisible(), KDChart::DataValueAttributes::isVisible(), KDChart::TextAttributes::pen(), KDChart::DataValueAttributes::position(), KDChart::DataValueAttributes::prefix(), KDChart::TextAttributes::rotation(), KDChart::DataValueAttributes::showRepetitiveDataLabels(), KDChart::DataValueAttributes::suffix(), and KDChart::DataValueAttributes::textAttributes(). Referenced by KDChart::RingDiagram::paint(), and KDChart::PolarDiagram::paint().
00476 { 00477 // paint one data series 00478 const DataValueAttributes a( dataValueAttributes(index) ); 00479 if ( !a.isVisible() ) return; 00480 00481 // handle decimal digits 00482 int decimalDigits = a.decimalDigits(); 00483 int decimalPos = QString::number( value ).indexOf( QLatin1Char( '.' ) ); 00484 QString roundedValue; 00485 if ( a.dataLabel().isNull() ) { 00486 if ( decimalPos > 0 && value != 0 ) 00487 roundedValue = roundValues ( value, decimalPos, decimalDigits ); 00488 else 00489 roundedValue = QString::number( value ); 00490 } else 00491 roundedValue = a.dataLabel(); 00492 // handle prefix and suffix 00493 if ( !a.prefix().isNull() ) 00494 roundedValue.prepend( a.prefix() ); 00495 00496 if ( !a.suffix().isNull() ) 00497 roundedValue.append( a.suffix() ); 00498 00499 const TextAttributes ta( a.textAttributes() ); 00500 // FIXME draw the non-text bits, background, etc 00501 if ( ta.isVisible() ) { 00502 00503 QPointF pt( pos ); 00504 /* for debugging: 00505 PainterSaver painterSaver( painter ); 00506 painter->setPen( Qt::black ); 00507 painter->drawLine( pos - QPointF( 1,1), pos + QPointF( 1,1) ); 00508 painter->drawLine( pos - QPointF(-1,1), pos + QPointF(-1,1) ); 00509 */ 00510 00511 // adjust the text start point position, if alignment is not Bottom/Left 00512 const RelativePosition relPos( a.position( value >= 0.0 ) ); 00513 const Qt::Alignment alignBottomLeft = Qt::AlignBottom | Qt::AlignLeft; 00514 const QFont calculatedFont( ta.calculatedFont( d->plane, KDChartEnums::MeasureOrientationMinimum ) ); 00515 //qDebug() << "calculatedFont's point size:" << calculatedFont.pointSizeF(); 00516 if( (relPos.alignment() & alignBottomLeft) != alignBottomLeft ){ 00517 const QRectF boundRect( 00518 d->cachedFontMetrics( calculatedFont, this )->boundingRect( roundedValue ) ); 00519 if( relPos.alignment() & Qt::AlignRight ) 00520 pt.rx() -= boundRect.width(); 00521 else if( relPos.alignment() & Qt::AlignHCenter ) 00522 pt.rx() -= 0.5 * boundRect.width(); 00523 00524 if( relPos.alignment() & Qt::AlignTop ) 00525 pt.ry() += boundRect.height(); 00526 else if( relPos.alignment() & Qt::AlignVCenter ) 00527 pt.ry() += 0.5 * boundRect.height(); 00528 } 00529 00530 // FIXME draw the non-text bits, background, etc 00531 00532 if ( a.showRepetitiveDataLabels() || 00533 pos.x() <= d->lastX || 00534 d->lastRoundedValue != roundedValue ) { 00535 d->lastRoundedValue = roundedValue; 00536 d->lastX = pos.x(); 00537 00538 PainterSaver painterSaver( painter ); 00539 painter->setPen( ta.pen() ); 00540 painter->setFont( calculatedFont ); 00541 painter->translate( pt ); 00542 painter->rotate( ta.rotation() ); 00543 painter->drawText( QPointF(0, 0), roundedValue ); 00544 } 00545 } 00546 } 00547 00548 |
|
Definition at line 576 of file KDChartAbstractDiagram.cpp.
00579 { 00580 for ( int j=0; j< rowCount; ++j ) { 00581 const QModelIndex index = model()->index( j, i, rootIndex() ); 00582 double value = model()->data( index ).toDouble(); 00583 const QPointF pos = coordinatePlane()->translate( QPointF( j, value ) ); 00584 paintDataValueText( painter, index, pos, value ); 00585 } 00586 } 00587 } 00588 00589 |
|
|
Definition at line 614 of file KDChartAbstractDiagram.cpp. References KDChart::MarkerAttributes::markerStyle(). Referenced by KDChart::MarkerLayoutItem::paintIntoRect(), and KDChart::AbstractDiagram::paintMarker().
00618 { 00619 00620 const QPen oldPen( painter->pen() ); 00621 // Pen is used to paint 4Pixels - 1 Pixel - Ring and FastCross types. 00622 // make sure to use the brush color - see above in those cases. 00623 const bool isFourPixels = (markerAttributes.markerStyle() == MarkerAttributes::Marker4Pixels); 00624 if( isFourPixels || (markerAttributes.markerStyle() == MarkerAttributes::Marker1Pixel) ){ 00625 // for high-performance point charts with tiny point markers: 00626 painter->setPen( QPen( brush.color().light() ) ); 00627 if( isFourPixels ){ 00628 const qreal x = pos.x(); 00629 const qreal y = pos.y(); 00630 painter->drawLine( QPointF(x-1.0,y-1.0), 00631 QPointF(x+1.0,y-1.0) ); 00632 painter->drawLine( QPointF(x-1.0,y), 00633 QPointF(x+1.0,y) ); 00634 painter->drawLine( QPointF(x-1.0,y+1.0), 00635 QPointF(x+1.0,y+1.0) ); 00636 } 00637 painter->drawPoint( pos ); 00638 }else{ 00639 PainterSaver painterSaver( painter ); 00640 // we only a solid line surrounding the markers 00641 QPen painterPen( pen ); 00642 painterPen.setStyle( Qt::SolidLine ); 00643 painter->setPen( painterPen ); 00644 painter->setBrush( brush ); 00645 painter->setRenderHint ( QPainter::Antialiasing ); 00646 painter->translate( pos ); 00647 switch ( markerAttributes.markerStyle() ) { 00648 case MarkerAttributes::MarkerCircle: 00649 painter->drawEllipse( QRectF( 0 - maSize.height()/2, 0 - maSize.width()/2, 00650 maSize.height(), maSize.width()) ); 00651 break; 00652 case MarkerAttributes::MarkerSquare: 00653 { 00654 QRectF rect( 0 - maSize.width()/2, 0 - maSize.height()/2, 00655 maSize.width(), maSize.height() ); 00656 painter->drawRect( rect ); 00657 painter->fillRect( rect, brush.color() ); 00658 break; 00659 } 00660 case MarkerAttributes::MarkerDiamond: 00661 { 00662 QVector <QPointF > diamondPoints; 00663 QPointF top, left, bottom, right; 00664 top = QPointF( 0, 0 - maSize.height()/2 ); 00665 left = QPointF( 0 - maSize.width()/2, 0 ); 00666 bottom = QPointF( 0, maSize.height()/2 ); 00667 right = QPointF( maSize.width()/2, 0 ); 00668 diamondPoints << top << left << bottom << right; 00669 painter->drawPolygon( diamondPoints ); 00670 break; 00671 } 00672 // both handled on top of the method: 00673 case MarkerAttributes::Marker1Pixel: 00674 case MarkerAttributes::Marker4Pixels: 00675 break; 00676 case MarkerAttributes::MarkerRing: 00677 { 00678 painter->setPen( QPen( brush.color() ) ); 00679 painter->setBrush( Qt::NoBrush ); 00680 painter->drawEllipse( QRectF( 0 - maSize.height()/2, 0 - maSize.width()/2, 00681 maSize.height(), maSize.width()) ); 00682 break; 00683 } 00684 case MarkerAttributes::MarkerCross: 00685 { 00686 QRectF rect( maSize.width()*-0.5, maSize.height()*-0.2, 00687 maSize.width(), maSize.height()*0.4 ); 00688 painter->drawRect( rect ); 00689 rect.setTopLeft(QPointF( maSize.width()*-0.2, maSize.height()*-0.5 )); 00690 rect.setSize(QSizeF( maSize.width()*0.4, maSize.height() )); 00691 painter->drawRect( rect ); 00692 break; 00693 } 00694 case MarkerAttributes::MarkerFastCross: 00695 { 00696 QPointF left, right, top, bottom; 00697 left = QPointF( -maSize.width()/2, 0 ); 00698 right = QPointF( maSize.width()/2, 0 ); 00699 top = QPointF( 0, -maSize.height()/2 ); 00700 bottom= QPointF( 0, maSize.height()/2 ); 00701 painter->setPen( QPen( brush.color() ) ); 00702 painter->drawLine( left, right ); 00703 painter->drawLine( top, bottom ); 00704 break; 00705 } 00706 default: 00707 Q_ASSERT_X ( false, "paintMarkers()", 00708 "Type item does not match a defined Marker Type." ); 00709 } 00710 } 00711 painter->setPen( oldPen ); 00712 } 00713 00714 void AbstractDiagram::paintMarkers( QPainter* painter ) |
|
Definition at line 716 of file KDChartAbstractDiagram.cpp.
00719 { 00720 for ( int j=0; j< rowCount; ++j ) { 00721 const QModelIndex index = model()->index( j, i, rootIndex() ); 00722 double value = model()->data( index ).toDouble(); 00723 const QPointF pos = coordinatePlane()->translate( QPointF( j, value ) ); 00724 paintMarker( painter, index, pos ); 00725 } 00726 } 00727 } 00728 00729 |
|
Retrieve the pen to be used, for painting the datapoint at the given index in the model.
Definition at line 770 of file KDChartAbstractDiagram.cpp.
00777 { |
|
Retrieve the pen to be used for the given dataset. This will fall back automatically to what was set at model level, if there are no dataset specific settings.
Definition at line 762 of file KDChartAbstractDiagram.cpp.
00769 { |
|
Retrieve the pen to be used for painting datapoints globally. This will fall back automatically to the default settings, if there are no specific settings.
Definition at line 756 of file KDChartAbstractDiagram.cpp. Referenced by KDChart::PieDiagram::paint(), and KDChart::LineDiagram::paint().
00761 { |
|
Definition at line 468 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::CartesianCoordinatePlane::getDataDimensionsList(). |
|
Emitted upon change of a property of the Diagram.
Referenced by KDChart::LineDiagram::resetLineAttributes(), KDChart::AbstractDiagram::setDataValueAttributes(), KDChart::LineDiagram::setLineAttributes(), KDChart::LineDiagram::setThreeDLineAttributes(), and KDChart::LineDiagram::setType(). |
|
Definition at line 146 of file KDChartAbstractCartesianDiagram.cpp. References d. Referenced by KDChart::LineDiagram::paint(), and referenceDiagramIsBarDiagram().
00147 { 00148 return d->referenceDiagram; 00149 } |
|
Definition at line 151 of file KDChartAbstractCartesianDiagram.cpp. References d.
00152 { 00153 return d->referenceDiagramOffset; 00154 } |
|
Called by the widget's sizeEvent. Adjust all internal structures, that are calculated, dependending on the size of the widget.
Implements KDChart::AbstractDiagram. Definition at line 670 of file KDChartBarDiagram.cpp.
00671 { 00672 } |
|
Definition at line 193 of file KDChartBarDiagram.cpp.
00194 { 00195 00196 } |
|
[reimplemented]
Definition at line 830 of file KDChartAbstractDiagram.cpp.
00832 { return QModelIndex(); }
|
|
Set whether data value labels are allowed to overlap.
Definition at line 440 of file KDChartAbstractDiagram.cpp. References d.
00445 { |
|
Set whether anti-aliasing is to be used while rendering this diagram.
Definition at line 451 of file KDChartAbstractDiagram.cpp. References d.
00456 { |
|
Associate an AttributesModel with this diagram. Note that the diagram does _not_ take ownership of the AttributesModel. This should thus only be used with AttributesModels that have been explicitely created by the user, and are owned by her. Setting an AttributesModel that is internal to another diagram is an error. Correct:
Wrong:
Definition at line 261 of file KDChartAbstractDiagram.cpp. References d, and KDChart::AbstractDiagram::modelsChanged().
00262 { 00263 if( amodel->sourceModel() != model() ) { 00264 qWarning("KDChart::AbstractDiagram::setAttributesModel() failed: " 00265 "Trying to set an attributesmodel which works on a different " 00266 "model than the diagram."); 00267 return; 00268 } 00269 if( qobject_cast<PrivateAttributesModel*>(amodel) ) { 00270 qWarning("KDChart::AbstractDiagram::setAttributesModel() failed: " 00271 "Trying to set an attributesmodel that is private to another diagram."); 00272 return; 00273 } 00274 d->setAttributesModel(amodel); 00275 scheduleDelayedItemsLayout(); 00276 d->databoundariesDirty = true; 00277 emit modelsChanged(); 00278 } |
|
Definition at line 301 of file KDChartAbstractDiagram.cpp. References d. |
|
Definition at line 100 of file KDChartBarDiagram.cpp. References KDChart::AbstractDiagram::attributesModel(), KDChart::BarAttributesRole, d, and KDChart::AttributesModel::setData().
00101 { 00102 attributesModel()->setData( 00103 d->attributesModel->mapFromSource( index ), 00104 qVariantFromValue( ta ), 00105 BarAttributesRole ); 00106 } |
|
Definition at line 92 of file KDChartBarDiagram.cpp. References KDChart::BarAttributesRole, and d.
00093 { 00094 d->attributesModel->setHeaderData( 00095 column, Qt::Vertical, 00096 qVariantFromValue( ta ), 00097 BarAttributesRole ); 00098 } |
|
Definition at line 87 of file KDChartBarDiagram.cpp. References KDChart::BarAttributesRole, and d.
00088 { 00089 d->attributesModel->setModelData( qVariantFromValue( ta ), BarAttributesRole ); 00090 } |
|
Set the brush to be used, for painting all datasets in the model.
Definition at line 786 of file KDChartAbstractDiagram.cpp.
00792 { |
|
Set the brush to be used, for painting the given dataset.
Definition at line 793 of file KDChartAbstractDiagram.cpp.
00801 { |
|
Set the brush to be used, for painting the datapoint at the given index.
Definition at line 778 of file KDChartAbstractDiagram.cpp.
00785 { |
|
Set the coordinate plane associated with the diagram. This determines how coordinates in value space are mapped into pixel space. The chart takes ownership.
Reimplemented from KDChart::AbstractDiagram. Definition at line 123 of file KDChartAbstractCartesianDiagram.cpp. References KDChart::AbstractDiagram::coordinatePlane(), and KDChart::AbstractDiagram::setCoordinatePlane().
00124 { 00125 if( coordinatePlane() ) disconnect( coordinatePlane() ); 00126 AbstractDiagram::setCoordinatePlane(plane); 00127 00128 // show the axes, after all have been adjusted 00129 // (because they might be dependend on each other) 00130 /* 00131 if( plane ) 00132 Q_FOREACH( CartesianAxis* axis, d->axesList ) 00133 axis->show(); 00134 else 00135 Q_FOREACH( CartesianAxis* axis, d->axesList ) 00136 axis->hide(); 00137 */ 00138 } |
|
Definition at line 240 of file KDChartAbstractDiagram.cpp. References d. Referenced by setThreeDBarAttributes(), KDChart::LineDiagram::setThreeDLineAttributes(), KDChart::LineDiagram::setType(), and setType().
00241 { 00242 d->databoundariesDirty = true; 00243 } |
|
Sets the dataset dimension of the diagram.
Definition at line 947 of file KDChartAbstractDiagram.cpp. References d.
00954 { |
|
Set the DataValueAttributes for all datapoints in the model.
Definition at line 434 of file KDChartAbstractDiagram.cpp. References d.
00439 { |
|
Set the DataValueAttributes for the given dataset.
Definition at line 406 of file KDChartAbstractDiagram.cpp. References d.
00413 { |
|
Set the DataValueAttributes for the given index.
Definition at line 395 of file KDChartAbstractDiagram.cpp. References d, KDChart::DataValueLabelAttributesRole, and KDChart::AbstractDiagram::propertiesChanged().
00395 { 00396 d->attributesModel->setData( 00397 d->attributesModel->mapFromSource( index ), 00398 qVariantFromValue( a ), 00399 DataValueLabelAttributesRole ); 00400 emit propertiesChanged(); 00401 } 00402 00403 |
|
Hide (or unhide, resp.) all datapoints in the model.
Definition at line 365 of file KDChartAbstractDiagram.cpp. References d.
00372 { |
|
Hide (or unhide, resp.) a dataset.
Definition at line 356 of file KDChartAbstractDiagram.cpp. References d.
00364 { |
|
Hide (or unhide, resp.) a data cell.
Definition at line 347 of file KDChartAbstractDiagram.cpp. References d, and KDChart::DataHiddenRole.
00355 { |
|
Associate a model with the diagram.
Definition at line 245 of file KDChartAbstractDiagram.cpp. References d, KDChart::AttributesModel::initFrom(), and KDChart::AbstractDiagram::modelsChanged().
00246 { 00247 QAbstractItemView::setModel( newModel ); 00248 AttributesModel* amodel = new PrivateAttributesModel( newModel, this ); 00249 amodel->initFrom( d->attributesModel ); 00250 d->setAttributesModel(amodel); 00251 scheduleDelayedItemsLayout(); 00252 d->databoundariesDirty = true; 00253 emit modelsChanged(); 00254 } |
|
Set the pen to be used, for painting all datasets in the model.
Definition at line 740 of file KDChartAbstractDiagram.cpp.
00746 { |
|
Set the pen to be used, for painting the given dataset.
Definition at line 747 of file KDChartAbstractDiagram.cpp.
00755 { |
|
Set the pen to be used, for painting the datapoint at the given index.
Definition at line 732 of file KDChartAbstractDiagram.cpp.
00739 { |
|
Definition at line 462 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::LineDiagram::setType(), and setType().
00467 { |
|
Definition at line 140 of file KDChartAbstractCartesianDiagram.cpp. References d.
|
|
Set the root index in the model, where the diagram starts referencing data for display. [reimplemented] Definition at line 294 of file KDChartAbstractDiagram.cpp. References d. |
|
[reimplemented]
Definition at line 848 of file KDChartAbstractDiagram.cpp.
00850 { return QRegion(); }
|
|
Definition at line 147 of file KDChartBarDiagram.cpp. References d, KDChart::AbstractDiagram::setDataBoundariesDirty(), and KDChart::ThreeDBarAttributesRole.
00148 { 00149 setDataBoundariesDirty(); 00150 d->attributesModel->setData( 00151 d->attributesModel->mapFromSource(index), 00152 qVariantFromValue( threeDAttrs ), 00153 ThreeDBarAttributesRole ); 00154 emit layoutChanged( this ); 00155 } |
|
Definition at line 137 of file KDChartBarDiagram.cpp. References d, KDChart::AbstractDiagram::setDataBoundariesDirty(), and KDChart::ThreeDBarAttributesRole.
00138 { 00139 setDataBoundariesDirty(); 00140 d->attributesModel->setHeaderData( 00141 column, Qt::Vertical, 00142 qVariantFromValue( threeDAttrs ), 00143 ThreeDBarAttributesRole ); 00144 emit layoutChanged( this ); 00145 } |
|
Definition at line 130 of file KDChartBarDiagram.cpp. References d, KDChart::AbstractDiagram::setDataBoundariesDirty(), and KDChart::ThreeDBarAttributesRole.
00131 { 00132 setDataBoundariesDirty(); 00133 d->attributesModel->setModelData( qVariantFromValue( threeDAttrs ), ThreeDBarAttributesRole ); 00134 emit layoutChanged( this ); 00135 } |
|
Definition at line 71 of file KDChartBarDiagram.cpp. References d, KDChart::AbstractDiagram::setDataBoundariesDirty(), and KDChart::AbstractDiagram::setPercentMode().
00072 { 00073 if ( type == d->barType ) return; 00074 00075 d->barType = type; 00076 // AbstractAxis settings - see AbstractDiagram and CartesianAxis 00077 setPercentMode( type == BarDiagram::Percent ); 00078 setDataBoundariesDirty(); 00079 emit layoutChanged( this ); 00080 } |
|
Removes the axis from the diagram, without deleting it. The diagram no longer owns the axis, so it is the caller's responsibility to delete the axis.
Definition at line 98 of file KDChartAbstractCartesianDiagram.cpp. References d, KDChart::AbstractAxis::deleteObserver(), KDChart::AbstractCartesianDiagram::layoutPlanes(), and KDChart::AbstractLayoutItem::setParentWidget(). Referenced by KDChart::CartesianAxis::~CartesianAxis().
00099 { 00100 const int idx = d->axesList.indexOf( axis ); 00101 if( idx != -1 ) 00102 d->axesList.takeAt( idx ); 00103 axis->deleteObserver( this ); 00104 axis->setParentWidget( 0 ); 00105 layoutPlanes(); 00106 } |
|
Definition at line 171 of file KDChartBarDiagram.cpp. References d.
|
|
Definition at line 163 of file KDChartBarDiagram.cpp. References d.
00164 { 00165 return qVariantValue<ThreeDBarAttributes>( 00166 d->attributesModel->data( 00167 d->attributesModel->mapFromSource( columnToIndex( column ) ), 00168 KDChart::ThreeDBarAttributesRole ) ); 00169 } |
|
Definition at line 157 of file KDChartBarDiagram.cpp. References d. Referenced by paint(), and threeDItemDepth().
00158 { 00159 return qVariantValue<ThreeDBarAttributes>( 00160 d->attributesModel->data( KDChart::ThreeDBarAttributesRole ) ); 00161 } |
|
Implements KDChart::AbstractCartesianDiagram. Definition at line 184 of file KDChartBarDiagram.cpp. References d.
00185 { 00186 return qVariantValue<ThreeDBarAttributes>( 00187 d->attributesModel->headerData ( 00188 column, 00189 Qt::Vertical, 00190 KDChart::ThreeDBarAttributesRole ) ).validDepth(); 00191 } |
|
Implements KDChart::AbstractCartesianDiagram. Definition at line 179 of file KDChartBarDiagram.cpp. References threeDBarAttributes(), and KDChart::AbstractThreeDAttributes::validDepth().
00180 { 00181 return threeDBarAttributes( index ).validDepth(); 00182 } |
|
Definition at line 82 of file KDChartBarDiagram.cpp. References d. Referenced by calculateDataBoundaries(), and paint().
00083 { 00084 return d->barType; 00085 } |
|
Definition at line 961 of file KDChartAbstractDiagram.cpp. References d. Referenced by KDChart::AbstractDiagram::doItemsLayout(). |
|
Set the palette to be used, for painting datasets to the default palette.
Definition at line 855 of file KDChartAbstractDiagram.cpp. References d.
00859 { |
|
Set the palette to be used, for painting datasets to the rainbow palette.
Definition at line 865 of file KDChartAbstractDiagram.cpp. References d.
00869 { |
|
Returns whether the diagram is using its own built-in attributes model or an attributes model that was set via setAttributesModel.
Definition at line 280 of file KDChartAbstractDiagram.cpp. References d.
00281 { 00282 return d->usesExternalAttributesModel(); 00283 } |
|
Set the palette to be used, for painting datasets to the subdued palette.
Definition at line 860 of file KDChartAbstractDiagram.cpp. References d.
00864 { |
|
Helper method, retrieving the data value (DisplayRole) for a given row and column.
Definition at line 955 of file KDChartAbstractDiagram.cpp. References KDChart::AbstractDiagram::attributesModelRootIndex(), and d. Referenced by KDChart::LineDiagram::paint().
00960 { |
|
[reimplemented]
Definition at line 842 of file KDChartAbstractDiagram.cpp.
00844 { return true; } |
|
[reimplemented]
Definition at line 825 of file KDChartAbstractDiagram.cpp.
00829 {} |
|
[reimplemented]
Definition at line 851 of file KDChartAbstractDiagram.cpp. |
|
Definition at line 589 of file KDChartAbstractDiagram.h. |