##// END OF EJS Templates
Updates development_build option
Updates development_build option

File last commit:

r987:74f7679156ae
r998:310fbd27a8f1
Show More
qchartaxis.cpp
533 lines | 10.8 KiB | text/x-c | CppLexer
Jani Honkonen
Add license headers
r794 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
Michal Klocek
Adds qchartaxis stub
r72 #include "qchartaxis.h"
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 #include "qchartaxis_p.h"
Michal Klocek
Adds qchartaxis stub
r72
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 QTCOMMERCIALCHART_BEGIN_NAMESPACE
Michal Klocek
Refactor documentation...
r331 /*!
\class QChartAxis
\brief The QChartAxis class is used for manipulating chart's axis
and for adding optional axes to the chart.
\mainclass
There is only one x Axis, however there can be multiple y axes.
Each chart series can be bound to exactly one Y axis and the share common X axis.
Axis can be setup to show axis line with ticks, gird lines and shades.
*/
Michal Klocek
Adds missing doc for qchartaxis
r333 /*!
\fn bool QChartAxis::isAxisVisible() const
\brief Returns if axis is visible
\sa setAxisVisible()
*/
Michal Klocek
Refactor documentation...
r331 /*!
\fn QPen QChartAxis::axisPen() const
\brief Returns pen used to draw axis and ticks.
\sa setAxisPen()
*/
Michal Klocek
Adds missing doc for qchartaxis
r333
/*!
Michal Klocek
Renames Grid to GridLine
r535 \fn bool QChartAxis::isGridLineVisible() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns if grid is visible
Michal Klocek
Renames Grid to GridLine
r535 \sa setGridLineVisible()
Michal Klocek
Adds missing doc for qchartaxis
r333 */
Michal Klocek
Refactor documentation...
r331 /*!
Michal Klocek
Fixes shades counter
r551 \fn QPen QChartAxis::gridLinePen() const
Michal Klocek
Refactor documentation...
r331 \brief Returns pen used to draw grid.
Michal Klocek
Fixes shades counter
r551 \sa setGridLinePen()
Michal Klocek
Refactor documentation...
r331 */
Michal Klocek
Adds missing doc for qchartaxis
r333 /*!
Michal Klocek
Fix labels, shades visible naming convention
r365 \fn bool QChartAxis::labelsVisible() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns if grid is visible
\sa setLabelsVisible()
*/
Michal Klocek
Refactor documentation...
r331 /*!
\fn QPen QChartAxis::labelsPen() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns the pen used to labels.
Michal Klocek
Refactor documentation...
r331 \sa setLabelsPen()
*/
/*!
\fn QBrush QChartAxis::labelsBrush() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns brush used to draw labels.
Michal Klocek
Refactor documentation...
r331 \sa setLabelsBrush()
*/
/*!
\fn QFont QChartAxis::labelsFont() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns font used to draw labels.
Michal Klocek
Refactor documentation...
r331 \sa setLabelsFont()
*/
/*!
\fn QFont QChartAxis::labelsAngle() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns angle used to draw labels.
Michal Klocek
Refactor documentation...
r331 \sa setLabelsAngle()
*/
Michal Klocek
Adds missing doc for qchartaxis
r333 /*!
Michal Klocek
Fix labels, shades visible naming convention
r365 \fn bool QChartAxis::shadesVisible() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns if shades are visible.
\sa setShadesVisible()
*/
/*!
\fn qreal QChartAxis::shadesOpacity() const
\brief Returns opacity of shades.
*/
Michal Klocek
Refactor documentation...
r331 /*!
\fn QPen QChartAxis::shadesPen() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns pen used to draw shades.
Michal Klocek
Refactor documentation...
r331 \sa setShadesPen()
*/
/*!
\fn QBrush QChartAxis::shadesBrush() const
Michal Klocek
Adds missing doc for qchartaxis
r333 \brief Returns brush used to draw shades.
Michal Klocek
Refactor documentation...
r331 \sa setShadesBrush()
*/
Michal Klocek
Adds missing doc for qchartaxis
r333 /*!
\fn qreal QChartAxis::min() const
\brief Returns minimum value on the axis.
\sa setMin()
*/
/*!
\fn qreal QChartAxis::max() const
\brief Returns maximim value on the axis.
\sa setMax()
*/
/*!
\fn void QChartAxis::minChanged(qreal min)
\brief Axis emits signal when \a min of axis has changed.
*/
/*!
\fn void QChartAxis::maxChanged(qreal max)
\brief Axis emits signal when \a max of axis has changed.
*/
Michal Klocek
Refactor documentation...
r331 /*!
Michal Klocek
Refactor domain model...
r439 \fn void QChartAxis::rangeChanged(qreal min, qreal max)
\brief Axis emits signal when \a min or \a max of axis has changed.
Michal Klocek
Refactor documentation...
r331 */
/*!
Michal Klocek
Refactor domain model...
r439 \fn int QChartAxis::ticksCount() const
\brief Return number of ticks on the axis
\sa setTicksCount()
Michal Klocek
Refactor documentation...
r331 */
Marek Rosa
QChartaxis docs added
r936 /*!
Marek Rosa
Few more fixes to docs
r937 \fn QChartAxisCategories* QChartAxis::categories()
Marek Rosa
QChartaxis docs added
r936 \brief Returns pointer to the list of categories which correspond to the values on the axis.
*/
/*!
Marek Rosa
Few more fixes to docs
r937 \fn void QChartAxis::ticksCountChanged(int count)
Marek Rosa
QChartaxis docs added
r936 \brief Emits the new \a count of ticks on the axis
Signal is emitted when the number of the ticks on the axis has been changed to a different value.
Parementer count\a count is the new number of ticks on the axis.
*/
Michal Klocek
Refactor documentation...
r331 /*!
Constructs new axis object which is a child of \a parent. Ownership is taken by
QChatView or QChart when axis added.
*/
sauimone
minor code review fixes
r759 QChartAxis::QChartAxis(QObject *parent) : QObject(parent),
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 d_ptr(new QChartAxisPrivate(this))
Michal Klocek
Adds qchartaxis stub
r72 {
}
Michal Klocek
Refactor documentation...
r331 /*!
Destructor of the axis object. When axis is added to chart, chart object takes ownership.
*/
Michal Klocek
Adds qchartaxis stub
r72 QChartAxis::~QChartAxis()
{
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a pen used to draw axis line and ticks.
*/
sauimone
minor code review fixes
r759 void QChartAxis::setAxisPen(const QPen &pen)
Michal Klocek
Adds refactored axis to presenter
r140 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_axisPen!=pen) {
d_ptr->m_axisPen = pen;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds refactored axis to presenter
r140 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QPen QChartAxis::axisPen() const
{
return d_ptr->m_axisPen;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets if axis and ticks are \a visible.
*/
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 void QChartAxis::setAxisVisible(bool visible)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_axisVisible != visible) {
d_ptr->m_axisVisible = visible;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 bool QChartAxis::isAxisVisible() const
{
return d_ptr->m_axisVisible;
}
Michal Klocek
Refactor documentation...
r331 /*!
Michal Klocek
Renames Grid to GridLine
r535 Sets if grid line is \a visible.
Michal Klocek
Refactor documentation...
r331 */
Michal Klocek
Renames Grid to GridLine
r535 void QChartAxis::setGridLineVisible(bool visible)
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_gridLineVisible != visible) {
d_ptr->m_gridLineVisible = visible;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 bool QChartAxis::isGridLineVisible() const
{
return d_ptr->m_gridLineVisible;
}
Michal Klocek
Refactor documentation...
r331 /*!
Michal Klocek
Renames Grid to GridLine
r535 Sets \a pen used to draw grid line.
Michal Klocek
Refactor documentation...
r331 */
sauimone
minor code review fixes
r759 void QChartAxis::setGridLinePen(const QPen &pen)
Michal Klocek
Adds more axis handling...
r176 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_gridLinePen != pen) {
d_ptr->m_gridLinePen = pen;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QPen QChartAxis::gridLinePen() const
{
return d_ptr->m_gridLinePen;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets if axis' labels are \a visible.
*/
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 void QChartAxis::setLabelsVisible(bool visible)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_labelsVisible != visible) {
d_ptr->m_labelsVisible = visible;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 bool QChartAxis::labelsVisible() const
{
return d_ptr->m_labelsVisible;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a pen used to draw labels.
*/
sauimone
minor code review fixes
r759 void QChartAxis::setLabelsPen(const QPen &pen)
Michal Klocek
Adds more axis handling...
r176 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_labelsPen != pen) {
d_ptr->m_labelsPen = pen;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QPen QChartAxis::labelsPen() const
{
return d_ptr->m_labelsPen;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a brush used to draw labels.
*/
sauimone
minor code review fixes
r759 void QChartAxis::setLabelsBrush(const QBrush &brush)
Michal Klocek
Adds more axis handling...
r176 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_labelsBrush != brush) {
d_ptr->m_labelsBrush = brush;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QBrush QChartAxis::labelsBrush() const
{
return d_ptr->m_labelsBrush;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a font used to draw labels.
*/
sauimone
minor code review fixes
r759 void QChartAxis::setLabelsFont(const QFont &font)
Michal Klocek
Adds more axis handling...
r176 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_labelsFont != font) {
d_ptr->m_labelsFont = font;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QFont QChartAxis::labelsFont() const
{
return d_ptr->m_labelsFont;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a angle for all the labels on given axis.
*/
Michal Klocek
Refactors axis handling...
r223 void QChartAxis::setLabelsAngle(int angle)
Michal Klocek
Adds more axis handling...
r176 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_labelsAngle != angle) {
d_ptr->m_labelsAngle = angle;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 int QChartAxis::labelsAngle() const
{
return d_ptr->m_labelsAngle;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets if shades are \a visible.
*/
Michal Klocek
Adds more axis handling...
r176 void QChartAxis::setShadesVisible(bool visible)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_shadesVisible != visible) {
d_ptr->m_shadesVisible = visible;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 bool QChartAxis::shadesVisible() const
{
return d_ptr->m_shadesVisible;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a pen used to draw shades.
*/
sauimone
minor code review fixes
r759 void QChartAxis::setShadesPen(const QPen &pen)
Michal Klocek
Adds more axis handling...
r176 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_shadesPen != pen) {
d_ptr->m_shadesPen = pen;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds more axis handling...
r176 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QPen QChartAxis::shadesPen() const
{
return d_ptr->m_shadesPen;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a brush used to draw shades.
*/
sauimone
minor code review fixes
r759 void QChartAxis::setShadesBrush(const QBrush &brush)
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_shadesBrush != brush) {
d_ptr->m_shadesBrush = brush;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 QBrush QChartAxis::shadesBrush() const
{
return d_ptr->m_shadesBrush;
}
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a opacity of the shades.
*/
Michal Klocek
Adds opacity to shades
r188 void QChartAxis::setShadesOpacity(qreal opacity)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_shadesOpacity != opacity) {
d_ptr->m_shadesOpacity=opacity;
emit d_ptr->updated();
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds opacity to shades
r188 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 qreal QChartAxis::shadesOpacity() const
{
return d_ptr->m_shadesOpacity;
}
Michal Klocek
Refactor documentation...
r331 /*!
Michal Klocek
Adds axis setRange implementation
r400 Sets \a min value on the axis.
Michal Klocek
Refactor documentation...
r331 */
Michal Klocek
Refactors axis handling...
r223 void QChartAxis::setMin(qreal min)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 setRange(min,d_ptr->m_max);
}
qreal QChartAxis::min() const
{
return d_ptr->m_min;
Michal Klocek
Refactors axis handling...
r223 }
Michal Klocek
Refactor documentation...
r331 /*!
Michal Klocek
Adds axis setRange implementation
r400 Sets \a max value on the axis.
Michal Klocek
Refactor documentation...
r331 */
Michal Klocek
Refactors axis handling...
r223 void QChartAxis::setMax(qreal max)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 setRange(d_ptr->m_min,max);
}
qreal QChartAxis::max() const
{
return d_ptr->m_max;
Michal Klocek
Refactors axis handling...
r223 }
Michal Klocek
Refactor documentation...
r331 /*!
Sets range from \a min to \a max on the axis.
*/
Michal Klocek
Refactors axis handling...
r223 void QChartAxis::setRange(qreal min, qreal max)
{
Michal Klocek
Refactor domain model...
r439 bool changed = false;
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (!qFuzzyIsNull(d_ptr->m_min - min)) {
d_ptr->m_min = min;
sauimone
minor code review fixes
r759 changed = true;
Michal Klocek
Refactor domain model...
r439 emit minChanged(min);
}
Michal Klocek
Adds axis setRange implementation
r400
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (!qFuzzyIsNull(d_ptr->m_max - max)) {
d_ptr->m_max = max;
sauimone
minor code review fixes
r759 changed = true;
Michal Klocek
Adds axis setRange implementation
r400 emit maxChanged(max);
}
sauimone
minor code review fixes
r759 if (changed) {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 emit rangeChanged(d_ptr->m_min,d_ptr->m_max);
emit d_ptr->changed(d_ptr->m_min, d_ptr->m_max, d_ptr->m_ticksCount, d_ptr->m_niceNumbers);
Michal Klocek
Bugfix missing min max intialization when axis added to domain
r442 }
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Adds axis setRange implementation
r400
Michal Klocek
Refactor documentation...
r331 /*!
Sets \a count for ticks on the axis.
*/
Michal Klocek
Refactors axis handling...
r223 void QChartAxis::setTicksCount(int count)
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_ticksCount != count) {
d_ptr->m_ticksCount = count;
Michal Klocek
Adds missing ticks hadnling
r554 emit ticksCountChanged(count);
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 emit d_ptr->changed(d_ptr->m_min, d_ptr->m_max, d_ptr->m_ticksCount, d_ptr->m_niceNumbers);
Michal Klocek
Refactor domain model...
r439 }
Michal Klocek
Refactors axis handling...
r223 }
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 int QChartAxis::ticksCount() const
{
return d_ptr->m_ticksCount;
}
Michal Klocek
Adds axis show/hide to API
r534 /*!
Sets axis, shades, labels and grid lines to be visible.
*/
void QChartAxis::show()
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 d_ptr->m_axisVisible=true;
d_ptr->m_gridLineVisible=true;
d_ptr->m_labelsVisible=true;
d_ptr->m_shadesVisible=true;
emit d_ptr->updated();
Michal Klocek
Adds axis show/hide to API
r534 }
/*!
Sets axis, shades, labels and grid lines to not be visible.
*/
void QChartAxis::hide()
{
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 d_ptr->m_axisVisible = false;
d_ptr->m_gridLineVisible = false;
d_ptr->m_labelsVisible = false;
d_ptr->m_shadesVisible = false;
emit d_ptr->updated();
Michal Klocek
Adds missing ticks hadnling
r554 }
Marek Rosa
QChartaxis docs added
r936 /*!
Sets the nice numbers state to \a enable
*/
Tero Ahola
Default to true in boolean setters
r987 void QChartAxis::setNiceNumbersEnabled(bool enable)
Michal Klocek
Adds missing ticks hadnling
r554 {
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 if (d_ptr->m_niceNumbers != enable){
d_ptr->m_niceNumbers = enable;
emit d_ptr->changed(d_ptr->m_min, d_ptr->m_max, d_ptr->m_ticksCount, d_ptr->m_niceNumbers);
Michal Klocek
Adds loosenumber algorithm...
r678 }
Michal Klocek
Adds missing ticks hadnling
r554 }
Tero Ahola
Default to true in boolean setters
r987 /*!
Returns whether nice numbers are enabled or not.
*/
bool QChartAxis::niceNumbersEnabled() const
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 {
return d_ptr->m_niceNumbers;
}
QChartAxisCategories* QChartAxis::categories()
{
return &d_ptr->m_category;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
QChartAxisPrivate::QChartAxisPrivate(QChartAxis* q):
q_ptr(q),
m_axisVisible(true),
m_gridLineVisible(true),
m_labelsVisible(true),
m_labelsAngle(0),
m_shadesVisible(false),
m_shadesOpacity(1.0),
m_min(0),
m_max(0),
m_ticksCount(5),
m_niceNumbers(false)
{
}
QChartAxisPrivate::~QChartAxisPrivate()
{
}
void QChartAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count)
{
q_ptr->setRange(min,max);
q_ptr->setTicksCount(count);
}
Michal Klocek
Refactors axis handling...
r223 #include "moc_qchartaxis.cpp"
Michal Klocek
Adds pimpl for qchartaxis and qchartaxiscategories
r963 #include "moc_qchartaxis_p.cpp"
Michal Klocek
Refactors axis handling...
r223
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85 QTCOMMERCIALCHART_END_NAMESPACE