+ Chart
|+ Text Labels
 |- Title
 |- Subtitle
 |- Footer
|- Legend
|+ Plot Area
 |+ Series
 |+ Surfaces
  |- Wall
  |- Floor
 |+ Axes
  |- X-Axis
  |- Y-Axis
  |- Secondary X-Axis
  |- Secondary Y-Axis
  |- ...
 |+ 3D Scene
  |- Light
  |- Transformation 

CLASS Chart:
 o GETTER METHODS
  QAbstractItemModel* model()
  QPointF             position()
  TextLabel*          title()
  TextLabel*          subtitle()
  TextLabel*          footer()
  Legend*             legend()
  PlotArea*           plotArea()
  Wall*               wall()
  Floor*              floor()
  QList<Axis*>        axes()
  Axis*               xAxis()
  Axis*               yAxis()
  Axis*               secondaryXAxis()
  Axis*               secondaryYAxis()
  ChartType           chartType()
  ChartSubtype        chartSubtype()
  bool                chartIsThreeD()
  Qt::Orientation     dataDirection()

 o SETTER METHODS
  setModel( QAbstractItemModel* )
  setPosition( QPointF )
  addAxis( Axis* )
  removeAxis( Axis* )
  setChartType( ChartType )
  setChartSubtype( ChartSubtype )
  setChartIsThreeD( bool )
  setSize( QSizeF )
  setDataDirection( Qt::Orientation )

CLASS TextLabel:
 o GETTER METHODS
  QPointF position()
  bool    isVisible()
  QFont   font()
  QSize   fontSize()
  QPen    pen()
  QColor  color()

 o SETTER METHODS
  setPosition( QPointF )
  setIsVisible()
  setFont( QFont )
  setFontSize( double )
  setPen( QPen )
  setColor( QColor )

CLASS Legend:
 o GETTER METHODS
  QPointF         position()
  bool            isVisible()
  TextLabel*      title()
  bool            frameIsVisible()
  QPen            framePen()
  QColor          frameColor()
  QBrush          backgroundBrush()
  QColor          backgroundColor()
  LegendExpansion expansion()

 o SETTER METHODS
  setPosition( QPointF )
  setIsVisible( bool )
  setTitle( TextLabel* )
  setFrameIsVisible( bool )
  setFramePen( QPen )
  setFramColor( QColor )
  setBackgroundBrush( QBrush )
  setBackgroundColor( QColor )
  setExpansion( LegendExpansion )

CLASS PlotArea:
 o GETTER METHODS
  QPointF         position()
  QSizeF          size()
  QList<Axis*>    axes()
  QList<DataSet*> dataSets()
  Wall*           wall()
  Floor*          floor()
  ThreeDScene*    threeDScene()

CLASS ThreeDScene:
 ...

CLASS Axis:
 o GETTER METHODS
  AxisPosition    position()
  TextLabel*      title()
  QString         id()
  AxisDimension   dimension()
  QList<DataSet*> dataSets()
  bool            hasMinorTicks()
  bool            hasMajorTicks()

 o SETTER METHODS
  setPosition( AxisPosition )
  setTitle( TextLabel* )
  setDimension( AxisDimension )
  attachDataSet( DataSet* )
  detachDataSet( DataSet* )
  setHasMinorTicks( bool )
  setHasMajorTicks( bool )

CLASS DataSet:
 o GETTER METHODS
  DataRange         dataRange()
  QList<DataRange>  dataRangeDomains()
  QString           title()
  ChartType         chartType()
  Axis*             attachedAxis()
  bool              showMeanValue()
  QPen              meanValuePen()
  bool              showErrorIndicator()
  QPen              errorIndicatorPen()

 o SETTER METHODS
  setDataRange( DataRange )
  setDataRangeDomains( QList<DataRange> )
  setTitle( QString )
  setChartType( chartType )
  setShowMeanValue( bool )
  setMeanValuePen( QPen )
  setShowErrorIndicator( bool )
  setErrorIndicatorPen( QPen )
  

CLASS Surface:
 o GETTER METHODS
  QPointF position()
  int     width()
  QBrush  brush()
  QPen    framePen()

 o SETTER METHODS
  setPosition( QPointF )
  setWidth( int )
  setBrush( QBrush )
  setFramePen( QPen )

