Click here to Skip to main content
15,861,125 members
Articles / Desktop Programming / MFC

High-speed Charting Control

Rate me:
Please Sign up or sign in to vote.
4.95/5 (327 votes)
13 Jul 2010CPOL35 min read 4.1M   99.5K   787  
A flexible charting control to display 2D data
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>ChartDemo: CChartAxis Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>CChartAxis Class Reference</h1><!-- doxytag: class="CChartAxis" -->Base class that takes care of the management of a chart axis.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="_chart_axis_8h-source.html">ChartAxis.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for CChartAxis:</div>
<div class="dynsection">

<p><center><img src="class_c_chart_axis.png" usemap="#CChartAxis_map" border="0" alt=""></center>
<map name="CChartAxis_map">
<area href="class_c_chart_date_time_axis.html" alt="CChartDateTimeAxis" shape="rect" coords="0,56,141,80">
<area href="class_c_chart_logarithmic_axis.html" alt="CChartLogarithmicAxis" shape="rect" coords="151,56,292,80">
<area href="class_c_chart_standard_axis.html" alt="CChartStandardAxis" shape="rect" coords="302,56,443,80">
</map>
</div>

<p>
<a href="class_c_chart_axis-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">EAxisAutoModes</a> { <a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162c238e209352b6df80689cd7febd452a2">NotAutomatic</a>, 
<a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162d8bbaa0f333ec3bed105282c270d95d7">FullAutomatic</a>, 
<a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac4972831626e6e92f41d3fc547aaaa6e35e6ad5290">ScreenAutomatic</a>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The different modes of automatic modes for an axis.  <a href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c917fa1081c59c2a896877e96db8a654"></a><!-- doxytag: member="CChartAxis::CChartAxis" ref="c917fa1081c59c2a896877e96db8a654" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#c917fa1081c59c2a896877e96db8a654">CChartAxis</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2fd6614c7bece2b705d21ed384c78928"></a><!-- doxytag: member="CChartAxis::~CChartAxis" ref="2fd6614c7bece2b705d21ed384c78928" args="()" -->
virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#2fd6614c7bece2b705d21ed384c78928">~CChartAxis</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default destructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="64a6ddeff5c34376d461c5bd5c6177dc"></a><!-- doxytag: member="CChartAxis::GetPosition" ref="64a6ddeff5c34376d461c5bd5c6177dc" args="()" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#64a6ddeff5c34376d461c5bd5c6177dc">GetPosition</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the position (in %) of the axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#e28da3bb1baa1938e70d0f25c02c3798">SetInverted</a> (bool bInverted)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis in reverse.  <a href="#e28da3bb1baa1938e70d0f25c02c3798"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0fd782ffe225b9a639a3880691b6e2ff"></a><!-- doxytag: member="CChartAxis::IsInverted" ref="0fd782ffe225b9a639a3880691b6e2ff" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#0fd782ffe225b9a639a3880691b6e2ff">IsInverted</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves if the axis is inverted or not. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#053e50c1db5a5f96c5543b81d90ec048">SetAutomatic</a> (bool bAutomatic)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis in automatic or manual mode.  <a href="#053e50c1db5a5f96c5543b81d90ec048"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#70c25c84b78ac9d349e1b30162bf88ce">IsAutomatic</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if an automatic mode has been set on this axis.  <a href="#70c25c84b78ac9d349e1b30162bf88ce"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c8c07c4ad50ff449f557ab57232f8a81"></a><!-- doxytag: member="CChartAxis::SetAutomaticMode" ref="c8c07c4ad50ff449f557ab57232f8a81" args="(EAxisAutoModes AutoMode)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#c8c07c4ad50ff449f557ab57232f8a81">SetAutomaticMode</a> (<a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">EAxisAutoModes</a> AutoMode)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the automatic mode of the axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2f448f32ecbf2406adbc987c2e354ef"></a><!-- doxytag: member="CChartAxis::GetAutomaticMode" ref="a2f448f32ecbf2406adbc987c2e354ef" args="() const " -->
<a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">EAxisAutoModes</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#a2f448f32ecbf2406adbc987c2e354ef">GetAutomaticMode</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the automatic type of the axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8108cb56f8a1e6b2688a429158ce38e3"></a><!-- doxytag: member="CChartAxis::SetVisible" ref="8108cb56f8a1e6b2688a429158ce38e3" args="(bool bVisible)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#8108cb56f8a1e6b2688a429158ce38e3">SetVisible</a> (bool bVisible)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis visible/invisible. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9e7bf4eec0e4a881f9ef869e3e12cd2e"></a><!-- doxytag: member="CChartAxis::IsVisible" ref="9e7bf4eec0e4a881f9ef869e3e12cd2e" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#9e7bf4eec0e4a881f9ef869e3e12cd2e">IsVisible</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the axis automatic mode. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#308cfb9fa31478e1689807693ee79f87">SetMinMax</a> (double Minimum, double Maximum)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis min and max values.  <a href="#308cfb9fa31478e1689807693ee79f87"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="72dcb666db261ed42c3bf81a928f3a89"></a><!-- doxytag: member="CChartAxis::GetMinMax" ref="72dcb666db261ed42c3bf81a928f3a89" args="(double &amp;Minimum, double &amp;Maximum) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#72dcb666db261ed42c3bf81a928f3a89">GetMinMax</a> (double &amp;Minimum, double &amp;Maximum) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the min anx max values of the axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f4930424d5142658710116b971ece619"></a><!-- doxytag: member="CChartAxis::SetAxisColor" ref="f4930424d5142658710116b971ece619" args="(COLORREF NewColor)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#f4930424d5142658710116b971ece619">SetAxisColor</a> (COLORREF NewColor)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis color. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6cb9a7c906010039c8d2b23d4cb2a9ef"></a><!-- doxytag: member="CChartAxis::SetTextColor" ref="6cb9a7c906010039c8d2b23d4cb2a9ef" args="(COLORREF NewColor)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#6cb9a7c906010039c8d2b23d4cb2a9ef">SetTextColor</a> (COLORREF NewColor)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the tick labels color. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f682fbf0598b0e268fbbb2d5106f3516"></a><!-- doxytag: member="CChartAxis::GetTextColor" ref="f682fbf0598b0e268fbbb2d5106f3516" args="() const " -->
COLORREF&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#f682fbf0598b0e268fbbb2d5106f3516">GetTextColor</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the tick labels color. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#3fa54ecfefdfe6ebdfe3f2adce0a6bfb">SetFont</a> (int nPointSize, const TChartString &amp;strFaceName)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the tick labels font.  <a href="#3fa54ecfefdfe6ebdfe3f2adce0a6bfb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4417f35b4d3f19e282d80f6bb09daa5f"></a><!-- doxytag: member="CChartAxis::GetLabel" ref="4417f35b4d3f19e282d80f6bb09daa5f" args="() const " -->
<a class="el" href="class_c_chart_axis_label.html">CChartAxisLabel</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#4417f35b4d3f19e282d80f6bb09daa5f">GetLabel</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the chart axis label object. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74b26b2b6d797991ee74120594e04f3d"></a><!-- doxytag: member="CChartAxis::GetGrid" ref="74b26b2b6d797991ee74120594e04f3d" args="() const " -->
<a class="el" href="class_c_chart_grid.html">CChartGrid</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#74b26b2b6d797991ee74120594e04f3d">GetGrid</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the chart axis grid object. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#e16cf020349a4b6d7ef484edde4347ba">SetMarginSize</a> (bool bAuto, int iNewSize)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the margin size.  <a href="#e16cf020349a4b6d7ef484edde4347ba"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0100cbb22d10c56eb7bc07cc62db0b36"></a><!-- doxytag: member="CChartAxis::SetPanZoomEnabled" ref="0100cbb22d10c56eb7bc07cc62db0b36" args="(bool bEnabled)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#0100cbb22d10c56eb7bc07cc62db0b36">SetPanZoomEnabled</a> (bool bEnabled)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable the pan and zoom for this axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#cb3b5a6071ebd6fe2cbd19cd9094fa7f">SetZoomLimit</a> (double dLimit)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the zoom limit.  <a href="#cb3b5a6071ebd6fe2cbd19cd9094fa7f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f2f3caee0c87708cf40518ed07ae7808"></a><!-- doxytag: member="CChartAxis::EnableScrollBar" ref="f2f3caee0c87708cf40518ed07ae7808" args="(bool bEnabled)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#f2f3caee0c87708cf40518ed07ae7808">EnableScrollBar</a> (bool bEnabled)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables/disables the scroll bar. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e60ca9c4f27472b7d60a87d49ce5040b"></a><!-- doxytag: member="CChartAxis::ScrollBarEnabled" ref="e60ca9c4f27472b7d60a87d49ce5040b" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#e60ca9c4f27472b7d60a87d49ce5040b">ScrollBarEnabled</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves if the scroll bar is enabled or not. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#64e03f4cbe792f05772159ef7ed9e2e8">SetAutoHideScrollBar</a> (bool bAutoHide)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specifies if the scroll bar is in auto-hide mode.  <a href="#64e03f4cbe792f05772159ef7ed9e2e8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b30b762fd016500a992a6095c63b648f"></a><!-- doxytag: member="CChartAxis::GetAutoHideScrollBar" ref="b30b762fd016500a992a6095c63b648f" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#b30b762fd016500a992a6095c63b648f">GetAutoHideScrollBar</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves if the scroll bar is in auto-hide mode. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#1f7c1f1d63f629cc91694735e085ff72">SetDiscrete</a> (bool bDiscrete)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis in discrete mode.  <a href="#1f7c1f1d63f629cc91694735e085ff72"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#e9bff492d909eb9d86f1b95d0cff9c45">ValueToScreen</a> (double Value) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a value on the axis to a screen position.  <a href="#e9bff492d909eb9d86f1b95d0cff9c45"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#474712f8b4f24920304443cbe6d3821d">ScreenToValue</a> (long ScreenVal) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a screen position to a value on the axis.  <a href="#474712f8b4f24920304443cbe6d3821d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="635f5e389dadc7f59b81ce6b0a4529f9"></a><!-- doxytag: member="CChartAxis::IsHorizontal" ref="635f5e389dadc7f59b81ce6b0a4529f9" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#635f5e389dadc7f59b81ce6b0a4529f9">IsHorizontal</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if the axis is horizontal. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2ebc8ea10c41e4b635e097469f56f313"></a><!-- doxytag: member="CChartAxis::IsPointInside" ref="2ebc8ea10c41e4b635e097469f56f313" args="(const CPoint &amp;screenPoint) const " -->
BOOL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#2ebc8ea10c41e4b635e097469f56f313">IsPointInside</a> (const CPoint &amp;screenPoint) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if a screen point is in the region of the axis. <br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#3c38b9980d4a3c999b03443193df6006">GetFirstTickValue</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the first tick value.  <a href="#3c38b9980d4a3c999b03443193df6006"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#88f7d87dffd2c1ef7ed5a3f4edd4a004">GetNextTickValue</a> (double dCurrentTick, double &amp;dNextTick) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the next tick value after a given tick.  <a href="#88f7d87dffd2c1ef7ed5a3f4edd4a004"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#bc9379bae77cf45f3f5010a247a5b8b2">GetTickPos</a> (double Value) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the screen position of a certain tick.  <a href="#bc9379bae77cf45f3f5010a247a5b8b2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#9cf74d600feed2f9a214644b97632829">ValueToScreenDiscrete</a> (double Value) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a value on the axis to a screen position.  <a href="#9cf74d600feed2f9a214644b97632829"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#4262b15c1564b6dd8220afbe62ae966b">ValueToScreenStandard</a> (double Value) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a value on the axis to a screen position.  <a href="#4262b15c1564b6dd8220afbe62ae966b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual TChartString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#d7a3eac8b9db57f066f52074a56d8ec7">GetTickLabel</a> (double TickValue) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the label for a specific tick.  <a href="#d7a3eac8b9db57f066f52074a56d8ec7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="720800eaa24e5d2fd14a44d2e823f8c2"></a><!-- doxytag: member="CChartAxis::RefreshTickIncrement" ref="720800eaa24e5d2fd14a44d2e823f8c2" args="()=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#720800eaa24e5d2fd14a44d2e823f8c2">RefreshTickIncrement</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forces a recalculation of the tick increment. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d90be3be952a70b66471b59cd008c21f"></a><!-- doxytag: member="CChartAxis::RefreshFirstTick" ref="d90be3be952a70b66471b59cd008c21f" args="()=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#d90be3be952a70b66471b59cd008c21f">RefreshFirstTick</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forces a recalculation of the first tick value. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#cadb566b32dd7cb52fd29d50eda6974f">GetScrollbarSteps</a> (int &amp;iTotalSteps, int &amp;iCurrentStep)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the step information related to the scrollbar.  <a href="#cadb566b32dd7cb52fd29d50eda6974f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#be54a513053538716155409cdaf2ac68">SetAxisToScrollStep</a> (int iPreviousStep, int iCurrentStep, bool bScrollInverted)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the axis to the specified scrollbar step.  <a href="#be54a513053538716155409cdaf2ac68"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#b890a71d7893431f7651d0fbb9352705">PanAxis</a> (long PanStart, long PanEnd)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pan the axis.  <a href="#b890a71d7893431f7651d0fbb9352705"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7202c1f22e3e0c678def008f19c53e19"></a><!-- doxytag: member="CChartAxis::SetZoomMinMax" ref="7202c1f22e3e0c678def008f19c53e19" args="(double Minimum, double Maximum)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#7202c1f22e3e0c678def008f19c53e19">SetZoomMinMax</a> (double Minimum, double Maximum)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the min and max values of the axis due to a zoom operation. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="933b0071a04af914af06ec03e7a0b250"></a><!-- doxytag: member="CChartAxis::UndoZoom" ref="933b0071a04af914af06ec03e7a0b250" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#933b0071a04af914af06ec03e7a0b250">UndoZoom</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverts the zoom and pan settings. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da7fa85a04f2430e5e293c248d87998f"></a><!-- doxytag: member="CChartAxis::GetAxisLenght" ref="da7fa85a04f2430e5e293c248d87998f" args="() const " -->
long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#da7fa85a04f2430e5e293c248d87998f">GetAxisLenght</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the lenght (in pixels) of the axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3e6094a0885da791201677702e2a9989"></a><!-- doxytag: member="CChartAxis::GetSeriesMinMax" ref="3e6094a0885da791201677702e2a9989" args="(double &amp;Minimum, double &amp;Maximum)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#3e6094a0885da791201677702e2a9989">GetSeriesMinMax</a> (double &amp;Minimum, double &amp;Maximum)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the min and max values for all the series related to this axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2336f30ca4bcbf3ece50d1c741990dd"></a><!-- doxytag: member="CChartAxis::GetSeriesScreenMinMax" ref="c2336f30ca4bcbf3ece50d1c741990dd" args="(double &amp;Minimum, double &amp;Maximum)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#c2336f30ca4bcbf3ece50d1c741990dd">GetSeriesScreenMinMax</a> (double &amp;Minimum, double &amp;Maximum)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the screen min and max values for all the series related to this axis. <br></td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e2c8a1607523b37f4fd11ec35e113856"></a><!-- doxytag: member="CChartAxis::m_pParentCtrl" ref="e2c8a1607523b37f4fd11ec35e113856" args="" -->
<a class="el" href="class_c_chart_ctrl.html">CChartCtrl</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#e2c8a1607523b37f4fd11ec35e113856">m_pParentCtrl</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parent chart control. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed506671697ff705f470d1a2c7b036e2"></a><!-- doxytag: member="CChartAxis::m_bIsHorizontal" ref="ed506671697ff705f470d1a2c7b036e2" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#ed506671697ff705f470d1a2c7b036e2">m_bIsHorizontal</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates if this is an horizontal or vertical axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bf01a1fb475970963e8c71bff67720b2"></a><!-- doxytag: member="CChartAxis::m_bIsInverted" ref="bf01a1fb475970963e8c71bff67720b2" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#bf01a1fb475970963e8c71bff67720b2">m_bIsInverted</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates if the axis is inverted. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">EAxisAutoModes</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#ab7d8484805306c90d550313535981bb">m_AutoMode</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates if the axis is automatic.  <a href="#ab7d8484805306c90d550313535981bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4fa87c936a3fc43345159691be8de282"></a><!-- doxytag: member="CChartAxis::m_bIsVisible" ref="4fa87c936a3fc43345159691be8de282" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#4fa87c936a3fc43345159691be8de282">m_bIsVisible</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates if the axis is visible or not. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#c42a13ee6fb3823fa963f084d30c85a6">m_bIsSecondary</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specifies if the axis is secondary.  <a href="#c42a13ee6fb3823fa963f084d30c85a6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d983f570d89221b662818a4d32b1d79f"></a><!-- doxytag: member="CChartAxis::m_MaxValue" ref="d983f570d89221b662818a4d32b1d79f" args="" -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#d983f570d89221b662818a4d32b1d79f">m_MaxValue</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The axis max value. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="21beddc72ca06eb4057ff8b22176bc56"></a><!-- doxytag: member="CChartAxis::m_MinValue" ref="21beddc72ca06eb4057ff8b22176bc56" args="" -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#21beddc72ca06eb4057ff8b22176bc56">m_MinValue</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The axis min value. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ef1ca7f15e14d313fa3bfb89e6d8634"></a><!-- doxytag: member="CChartAxis::m_UnzoomMin" ref="0ef1ca7f15e14d313fa3bfb89e6d8634" args="" -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#0ef1ca7f15e14d313fa3bfb89e6d8634">m_UnzoomMin</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Min value of the axis before it has been zoomed. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b59aae9335438f4013b7cfa6663631f5"></a><!-- doxytag: member="CChartAxis::m_UnzoomMax" ref="b59aae9335438f4013b7cfa6663631f5" args="" -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#b59aae9335438f4013b7cfa6663631f5">m_UnzoomMax</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Max value of the axis before it has been zoomed. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="709a22de2a236d99371e6a4b5a9abebb"></a><!-- doxytag: member="CChartAxis::m_bAutoTicks" ref="709a22de2a236d99371e6a4b5a9abebb" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#709a22de2a236d99371e6a4b5a9abebb">m_bAutoTicks</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specify if the tick increment is manual or automatic. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="47312e5e307faab0c07d4524d971803c"></a><!-- doxytag: member="CChartAxis::m_bDiscrete" ref="47312e5e307faab0c07d4524d971803c" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#47312e5e307faab0c07d4524d971803c">m_bDiscrete</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specify if the axis has to be in discrete mode or not. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3e31b004cf574ede66a8b069086b4236"></a><!-- doxytag: member="CChartAxis::m_StartPos" ref="3e31b004cf574ede66a8b069086b4236" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#3e31b004cf574ede66a8b069086b4236">m_StartPos</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start position of the axis (in pixels). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7d85a34e4dc88016775771bf9acc926"></a><!-- doxytag: member="CChartAxis::m_EndPos" ref="a7d85a34e4dc88016775771bf9acc926" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#a7d85a34e4dc88016775771bf9acc926">m_EndPos</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">End position of the axis (in pixels). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a33ee78a82bfa536959c1daaadd6dca6"></a><!-- doxytag: member="CChartAxis::m_AxisRect" ref="a33ee78a82bfa536959c1daaadd6dca6" args="" -->
CRect&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_chart_axis.html#a33ee78a82bfa536959c1daaadd6dca6">m_AxisRect</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The rectangle in which the axis is contained. <br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Base class that takes care of the management of a chart axis. 
<p>
This class cannot be instanciated but should be overriden in order to provide the required functionality (this is already done for standard axis, date/time axis and logarithmic axis).<br>
 The class provides already a lot of functionalities but delegate the ticks positioning and labeling to the child classes.<br>
 By default, the class manages a continues range of double values (which is the case for standard axis and date/time axis) but in some cases, this is not valid (for instance, a logarithmic scale). In that case, you should in addition override some specific functions (e.g. those handling the scrollbar). Take a look at the <a class="el" href="class_c_chart_logarithmic_axis.html" title="Specialization of a CChartAxis to display a logarithmic scale.">CChartLogarithmicAxis</a> class for more details. <hr><h2>Member Enumeration Documentation</h2>
<a class="anchor" name="74b3b27fe9d32d4a108c9ac497283162"></a><!-- doxytag: member="CChartAxis::EAxisAutoModes" ref="74b3b27fe9d32d4a108c9ac497283162" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">CChartAxis::EAxisAutoModes</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The different modes of automatic modes for an axis. 
<p>
<dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="74b3b27fe9d32d4a108c9ac497283162c238e209352b6df80689cd7febd452a2"></a><!-- doxytag: member="NotAutomatic" ref="74b3b27fe9d32d4a108c9ac497283162c238e209352b6df80689cd7febd452a2" args="" -->NotAutomatic</em>&nbsp;</td><td>
The axis min and max values are set manually. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="74b3b27fe9d32d4a108c9ac497283162d8bbaa0f333ec3bed105282c270d95d7"></a><!-- doxytag: member="FullAutomatic" ref="74b3b27fe9d32d4a108c9ac497283162d8bbaa0f333ec3bed105282c270d95d7" args="" -->FullAutomatic</em>&nbsp;</td><td>
The axis min and max values of the axis are the min and max values of all series associated with this axis. This corresponds to the "standard" automatic mode that was implemented before version 3.0. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="74b3b27fe9d32d4a108c9ac4972831626e6e92f41d3fc547aaaa6e35e6ad5290"></a><!-- doxytag: member="ScreenAutomatic" ref="74b3b27fe9d32d4a108c9ac4972831626e6e92f41d3fc547aaaa6e35e6ad5290" args="" -->ScreenAutomatic</em>&nbsp;</td><td>
The axis min and max values of the axis are the <b>visible</b> min and max values of all series associated with this axis. The end result will then depends on how the other axes are configured. </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="3c38b9980d4a3c999b03443193df6006"></a><!-- doxytag: member="CChartAxis::GetFirstTickValue" ref="3c38b9980d4a3c999b03443193df6006" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual double CChartAxis::GetFirstTickValue           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the first tick value. 
<p>
This pure virtual function must be implemented for specific axes type. 
</div>
</div><p>
<a class="anchor" name="88f7d87dffd2c1ef7ed5a3f4edd4a004"></a><!-- doxytag: member="CChartAxis::GetNextTickValue" ref="88f7d87dffd2c1ef7ed5a3f4edd4a004" args="(double dCurrentTick, double &amp;dNextTick) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool CChartAxis::GetNextTickValue           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>dCurrentTick</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>dNextTick</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieves the next tick value after a given tick. 
<p>
This pure virtual function must be implemented for specific axes type. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dCurrentTick</em>&nbsp;</td><td>The value of the current tick </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dNextTick</em>&nbsp;</td><td>The value of the next tick will be stored in this parameter </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if there is a next or false when the current tick is the last one. </dd></dl>

</div>
</div><p>
<a class="anchor" name="cadb566b32dd7cb52fd29d50eda6974f"></a><!-- doxytag: member="CChartAxis::GetScrollbarSteps" ref="cadb566b32dd7cb52fd29d50eda6974f" args="(int &amp;iTotalSteps, int &amp;iCurrentStep)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::GetScrollbarSteps           </td>
          <td>(</td>
          <td class="paramtype">int &amp;&nbsp;</td>
          <td class="paramname"> <em>iTotalSteps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&nbsp;</td>
          <td class="paramname"> <em>iCurrentStep</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieves the step information related to the scrollbar. 
<p>
This function can be implemented for specific axis types which should provide a behavior different than the standard behavior (for instance log axis). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iTotalSteps</em>&nbsp;</td><td>Stores the total number of steps for the scrollbar </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>iCurrentStep</em>&nbsp;</td><td>Stores the current step index for the scrollbar </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="d7a3eac8b9db57f066f52074a56d8ec7"></a><!-- doxytag: member="CChartAxis::GetTickLabel" ref="d7a3eac8b9db57f066f52074a56d8ec7" args="(double TickValue) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual TChartString CChartAxis::GetTickLabel           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>TickValue</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieves the label for a specific tick. 
<p>
This pure virtual function must be implemented for specific axes type. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>TickValue</em>&nbsp;</td><td>The tick value for which we need to get the label. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A TChartString containing the label for the tick. </dd></dl>

</div>
</div><p>
<a class="anchor" name="bc9379bae77cf45f3f5010a247a5b8b2"></a><!-- doxytag: member="CChartAxis::GetTickPos" ref="bc9379bae77cf45f3f5010a247a5b8b2" args="(double Value) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual long CChartAxis::GetTickPos           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>Value</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieves the screen position of a certain tick. 
<p>
This pure virtual function must be implemented for specific axes type. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>The value of the tick for which we want to retrieve the position </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the screen position of the tick </dd></dl>

</div>
</div><p>
<a class="anchor" name="70c25c84b78ac9d349e1b30162bf88ce"></a><!-- doxytag: member="CChartAxis::IsAutomatic" ref="70c25c84b78ac9d349e1b30162bf88ce" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool CChartAxis::IsAutomatic           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns true if an automatic mode has been set on this axis. 
<p>
<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>You should use the GetAutomaticType instead. </dd></dl>

</div>
</div><p>
<a class="anchor" name="b890a71d7893431f7651d0fbb9352705"></a><!-- doxytag: member="CChartAxis::PanAxis" ref="b890a71d7893431f7651d0fbb9352705" args="(long PanStart, long PanEnd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::PanAxis           </td>
          <td>(</td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>PanStart</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>PanEnd</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pan the axis. 
<p>
This function can be overriden in case the axis doesn't display a continuous range of values (e.g. log axis). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>PanStart</em>&nbsp;</td><td>The position of the start of the pan </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>PanEnd</em>&nbsp;</td><td>The position of the end of the pan </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="474712f8b4f24920304443cbe6d3821d"></a><!-- doxytag: member="CChartAxis::ScreenToValue" ref="474712f8b4f24920304443cbe6d3821d" args="(long ScreenVal) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double CChartAxis::ScreenToValue           </td>
          <td>(</td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>ScreenVal</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts a screen position to a value on the axis. 
<p>
The function is implemented for an axis with a standard behavior (the axis shows a continuous range of doubles). It is the case for standard axis and date/time axis (date are converted to doubles internally). Axis that needs a different behavior should override this function (e.g. a logarithmic axis). The function does not take care of the discrete mode. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ScreenVal</em>&nbsp;</td><td>The screen value to convert </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the double value </dd></dl>

</div>
</div><p>
<a class="anchor" name="64e03f4cbe792f05772159ef7ed9e2e8"></a><!-- doxytag: member="CChartAxis::SetAutoHideScrollBar" ref="64e03f4cbe792f05772159ef7ed9e2e8" args="(bool bAutoHide)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetAutoHideScrollBar           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bAutoHide</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Specifies if the scroll bar is in auto-hide mode. 
<p>
In auto-hide mode, the scroll bar will be hidden until you hover the mouse over it. 
</div>
</div><p>
<a class="anchor" name="053e50c1db5a5f96c5543b81d90ec048"></a><!-- doxytag: member="CChartAxis::SetAutomatic" ref="053e50c1db5a5f96c5543b81d90ec048" args="(bool bAutomatic)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetAutomatic           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bAutomatic</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the axis in automatic or manual mode. 
<p>
In automatic mode, the axis min and max will be updated depending on the series related to this axis. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bAutomatic</em>&nbsp;</td><td>true if the axis should be automatic. </td></tr>
  </table>
</dl>
<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>You should use the SetAutomaticType instead. </dd></dl>

</div>
</div><p>
<a class="anchor" name="be54a513053538716155409cdaf2ac68"></a><!-- doxytag: member="CChartAxis::SetAxisToScrollStep" ref="be54a513053538716155409cdaf2ac68" args="(int iPreviousStep, int iCurrentStep, bool bScrollInverted)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetAxisToScrollStep           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>iPreviousStep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>iCurrentStep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bScrollInverted</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the axis to the specified scrollbar step. 
<p>
This function can be implemented for specific axis types which should provide a behavior different than the standard behavior (for instance log axis). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iPreviousStep</em>&nbsp;</td><td>The previous scroll step. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>iCurrentStep</em>&nbsp;</td><td>The current scroll step to which the axis should be moved. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bScrollInverted</em>&nbsp;</td><td>Specifies if the scroll is inverted or not. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="1f7c1f1d63f629cc91694735e085ff72"></a><!-- doxytag: member="CChartAxis::SetDiscrete" ref="1f7c1f1d63f629cc91694735e085ff72" args="(bool bDiscrete)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetDiscrete           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bDiscrete</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the axis in discrete mode. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bDiscrete</em>&nbsp;</td><td>true if the axis has to be discrete, false otherwise. In discrete mode, the axis doesn't have a continuous range of values but only steps which are defined by the tick interval. In this mode, you won't be able to plot points at a different location that in the middle of two ticks. For instance, if you have a tick interval of 1.0, trying to plot a value of 0.9 will display the point at the same position as if the value was 0.3: it will be displayed in the middle of tick 0.0 and tick 1.0. <br>
It is mainly used to display the tick label in the middle of two ticks. This is for instance nice with date/time axis. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="3fa54ecfefdfe6ebdfe3f2adce0a6bfb"></a><!-- doxytag: member="CChartAxis::SetFont" ref="3fa54ecfefdfe6ebdfe3f2adce0a6bfb" args="(int nPointSize, const TChartString &amp;strFaceName)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetFont           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nPointSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TChartString &amp;&nbsp;</td>
          <td class="paramname"> <em>strFaceName</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the tick labels font. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>nPointSize</em>&nbsp;</td><td>The font point size </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>strFaceName</em>&nbsp;</td><td>The font face name </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="e28da3bb1baa1938e70d0f25c02c3798"></a><!-- doxytag: member="CChartAxis::SetInverted" ref="e28da3bb1baa1938e70d0f25c02c3798" args="(bool bInverted)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetInverted           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bInverted</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the axis in reverse. 
<p>
For an inverted axis, the values on the axis are in decreasing order. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bInverted</em>&nbsp;</td><td>true if the axis has to be inverted. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="e16cf020349a4b6d7ef484edde4347ba"></a><!-- doxytag: member="CChartAxis::SetMarginSize" ref="e16cf020349a4b6d7ef484edde4347ba" args="(bool bAuto, int iNewSize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetMarginSize           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bAuto</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>iNewSize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the margin size. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bAuto</em>&nbsp;</td><td>Specifies if the margin size is automatic or not. In automatic mode, the iNewSize parameter is ignored and the margin size is calculated automatically. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>iNewSize</em>&nbsp;</td><td>The new size of the margin, in manual mode. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="308cfb9fa31478e1689807693ee79f87"></a><!-- doxytag: member="CChartAxis::SetMinMax" ref="308cfb9fa31478e1689807693ee79f87" args="(double Minimum, double Maximum)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetMinMax           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>Minimum</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>Maximum</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the axis min and max values. 
<p>
This doesn't take into account the real type of the axis, so double values should be provided. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Minimum</em>&nbsp;</td><td>The min value of the axis </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Maximum</em>&nbsp;</td><td>The max value of the axis. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="cb3b5a6071ebd6fe2cbd19cd9094fa7f"></a><!-- doxytag: member="CChartAxis::SetZoomLimit" ref="cb3b5a6071ebd6fe2cbd19cd9094fa7f" args="(double dLimit)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CChartAxis::SetZoomLimit           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>dLimit</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the zoom limit. 
<p>
The zoom limit is the minimum lenght (in values) of the axis. 
</div>
</div><p>
<a class="anchor" name="e9bff492d909eb9d86f1b95d0cff9c45"></a><!-- doxytag: member="CChartAxis::ValueToScreen" ref="e9bff492d909eb9d86f1b95d0cff9c45" args="(double Value) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long CChartAxis::ValueToScreen           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>Value</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts a value on the axis to a screen position. 
<p>
The functions takes care of the discrete mode (internally, it calls ValueToScreenStandard or ValueToScreenDiscrete depending on the discrete mode). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>The value to convert </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the screen position of the value </dd></dl>

</div>
</div><p>
<a class="anchor" name="9cf74d600feed2f9a214644b97632829"></a><!-- doxytag: member="CChartAxis::ValueToScreenDiscrete" ref="9cf74d600feed2f9a214644b97632829" args="(double Value) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual long CChartAxis::ValueToScreenDiscrete           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>Value</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts a value on the axis to a screen position. 
<p>
This function is called internally only when the axis is in discrete mode. This pure virtual function must be implemented for specific axes type. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>The value to convert </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the screen position of the value </dd></dl>

</div>
</div><p>
<a class="anchor" name="4262b15c1564b6dd8220afbe62ae966b"></a><!-- doxytag: member="CChartAxis::ValueToScreenStandard" ref="4262b15c1564b6dd8220afbe62ae966b" args="(double Value) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long CChartAxis::ValueToScreenStandard           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>Value</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts a value on the axis to a screen position. 
<p>
This function is called internally only when the axis is in standard mode. This virtual function can be overriden when the axis doesn't display a continuous range of values (e.g. log axis). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Value</em>&nbsp;</td><td>The value to convert </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the screen position of the value </dd></dl>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="ab7d8484805306c90d550313535981bb"></a><!-- doxytag: member="CChartAxis::m_AutoMode" ref="ab7d8484805306c90d550313535981bb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_c_chart_axis.html#74b3b27fe9d32d4a108c9ac497283162">EAxisAutoModes</a> <a class="el" href="class_c_chart_axis.html#ab7d8484805306c90d550313535981bb">CChartAxis::m_AutoMode</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Indicates if the axis is automatic. 
<p>
Indicates the automatic mode of the axis 
</div>
</div><p>
<a class="anchor" name="c42a13ee6fb3823fa963f084d30c85a6"></a><!-- doxytag: member="CChartAxis::m_bIsSecondary" ref="c42a13ee6fb3823fa963f084d30c85a6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="class_c_chart_axis.html#c42a13ee6fb3823fa963f084d30c85a6">CChartAxis::m_bIsSecondary</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Specifies if the axis is secondary. 
<p>
The secondary axis is either on the top (for horizontal axis) or on the right (for vertical axis) of the chart. 
</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li>E:/Sources Misc/ChartDemo/ChartCtrl/<a class="el" href="_chart_axis_8h-source.html">ChartAxis.h</a><li>E:/Sources Misc/ChartDemo/ChartCtrl/ChartAxis.cpp</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Jan 17 13:33:10 2010 for ChartDemo by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Belgium Belgium
I am a 29 years old guy and I live with my girlfriend in Hoegaarden, little city from Belgium well known for its white beer Smile | :) .
I studied as an industrial engineer in electronics but I oriented myself more towards software development when I started to work.
Currently I am working in a research centre in mechatronica. I mainly develop in C++ but I also do a bit of Java.
When I have so spare time, I like to read (mainly fantasy) and play electric guitar.

Comments and Discussions