Mercurial > hg > aimc
diff trunk/src/Modules/Output/Graphics/GraphAxisSpec.h @ 397:7a573750b186
- First add of a lot of graphics code from the old version. Not working yet, not even compiling yet.
author | tomwalters |
---|---|
date | Fri, 15 Oct 2010 05:40:53 +0000 |
parents | |
children | 3ee03a6b95a0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trunk/src/Modules/Output/Graphics/GraphAxisSpec.h Fri Oct 15 05:40:53 2010 +0000 @@ -0,0 +1,88 @@ +// Copyright 2006, Willem van Engen +// +// AIM-C: A C++ implementation of the Auditory Image Model +// http://www.acousticscale.org/AIMC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef __GRAPH_AXIS_SPEC_H__ +#define __GRAPH_AXIS_SPEC_H__ + +#include "Support/Parameters.h" +#include "Modules/Output/Graphics/Scale/Scale.h" + +/*! \class GraphAxisSpec "Output/GraphAxisSpec.h" + * \brief Axis specification for a GraphicsView + */ +class GraphAxisSpec { +public: + /*! \brief Create a new GraphAxisSpec + * \param fMin Minimum value on the axis to show + * \param fMax Maximum value on the axis to show + * \param iScale Scale to use + * + * Please see SetScale() and SetRange() for more details. + */ + GraphAxisSpec(float fMin, float fMax, Scale::ScaleType iScale); + //! \brief Create a new GraphAxisSpec from defaults + GraphAxisSpec(); + + ~GraphAxisSpec(); + + /*! \brief Set the scale to use + * \param iScale Scale to use + */ + void SetDisplayScale(Scale::ScaleType iScale); + /*! \brief Set the minumum and maximum values to show on the axis + * \param fMin Minimum value on the axis to show + * \param fMax Maximum value on the axis to show + * + * Either fMin _must_ be smaller than fMax, or fMin==fMax but then + * this function must be called later to fulfil the former condition + * before it is used to scale data. + */ + void SetDisplayRange(float fMin, float fMax); + /*! \brief Set the label of this axis + * \param sLabel New label, or NULL to remove label + */ + void SetLabel(const char *sLabel); + + /*! \brief Read axis specification from parameter store + * \param pParam Parameter store to read from + * \param sPrefix Prefix to use, e.g. "view.x" + * \param fMin Default minumum value for 'auto' + * \param fMax Default maximum value for 'auto' + * \param iScale Default scale for 'auto' + * \return true if no error occured in reading + */ + bool Initialize(Parameters *pParam, + const char *sPrefix, + float fMin, + float fMax, + Scale::ScaleType iScale); + +protected: + //! \brief Minimum value on the axis to display + float m_fMin; + //! \brief Maximum value on the axis to display + float m_fMax; + //! \brief Scale to use + Scale *m_pScale; + //! \brief Axis label, NULL for no label + const char *m_sLabel; + + friend class GraphicsView; + friend class GraphicsViewTime; +}; + +#endif /* __GRAPH_AXIS_SPEC_H__ */