Updated standard library

Revision:
167:8aa3fb2a5a31
Parent:
166:53fd4a876dac
Child:
180:4882e80cfcfe
--- a/RA8875.h	Sun Feb 24 19:28:26 2019 +0000
+++ b/RA8875.h	Tue Feb 26 19:52:57 2019 +0000
@@ -2,32 +2,102 @@
 /// @mainpage RA8875 Display Controller Driver library
 ///
 /// The RA8875 Display controller is a powerful interface for low cost displays. It
-/// can support displays up to 800 x 480 pixels x 16-bit color. Another common 
-/// implementation is 480 x 272 x 16 with two layers. The two layers can be 
-/// exchanged, or blended in various ways (transparency, OR, AND, and more).
-/// It includes graphics acceleration capabilities for drawing primitives, 
-/// such as line, rectangle, circles, and more.
+/// can support displays up to 800 x 480 pixels x 16-bit color. 
+///
+/// Aside from 800 x 480 pixel displays, another common implementation is 
+/// 480 x 272 x 16 with two layers. The two layers can be exchanged, or blended 
+/// in various ways (transparency, OR, AND, and more). It includes graphics 
+/// acceleration capabilities for drawing primitives, such as line, rectangle, 
+/// circles, and more.
+///
+/// It is not a display for video-speed animations, and maybe could hold its own 
+/// as a slow picture frame, at least when using the SPI ports. How the performance 
+/// differs using I2C, 8-bit parallel or 16-bit parallel has not been evaluated.
+/// Certainly the parallel interface option would be expected to be a lot faster.
+///
+/// What it is good at is performing as a basic display for appliance or simple
+/// home automation, and because of the built-in capability to draw lines, circles, 
+/// ellipses, rectangles, rounded rectangles, and triangles, it does a lot of the 
+/// work that your host micro would otherwise be doing, and in many cases it does
+/// it much faster.
 ///
-/// It is not a display for super-fast animations, video, picture frames and so forth,
-/// at least when using the SPI ports. Performance has not been evaluated with one
-/// of the parallel port options.
+/// While it is good to know about Bresenham's algorithm (to draw a line) and how
+/// to implement it in software, this controller simplifies things - 
+/// You just give it (x1,y1), (x2,y2) and tell it to draw a line. 
+/// Without the hardware acceleration built into the RA8875, the host would have to
+/// compute every point, set the graphics cursor to that point, and fill in that
+/// point with the target color. A diagonal line of some length might take 100
+/// interactions instead of just a few. Other drawing primitives are similarly easy. 
+///
+/// It has some built-in fonts, which can be enhanced with optional font-chips, and 
+/// with the provided software font engine, and a few instructions, you can convert
+/// most any True Type Font into the data structures suitable for this display. 
+///
+/// To round out the features, this library offers the ability to render Bitmap (BMP),
+/// Icon (ICO), Join Photographic Experts Group (JPG), and Graphics Interchange Format 
+/// (GIF) images. These are implemented primarily in software, taking advantage of the 
+/// hardware acceleration where it can. 
+///
+/// When you are satisfied with what appears on screen, there is a PrintScreen method 
+/// to pull that image back out and write it to a file system as a BitMap image.
 ///
 /// The controller additionally supports backlight control (via PWM), keypad scanning
-/// (for a 4 x 5 matrix) and resistive touch-panel support. Recently support for a 
-/// capacitive touch screen was integrated, in a manner that makes the resistive and
-/// capactive interfaces nearly identical.
+/// (for a 4 x 5 matrix) and resistive touch-panel support. Support for capacitive
+/// touch screens is also integrated, in a manner that makes the resistive and
+/// capacitive interfaces nearly API identical. The capacitive touch support is for 
+/// either the FT5206 or the GSL1680 controller chips.
+///
+/// Here's a few hints to get started:
+/// * @ref Display_Config
+/// * @ref Touch_Panel
+/// * @ref Hardwired_KeyPad
+/// * @ref Example_Program
+/// * @ref Wiring_Diagram
+/// * @ref Future_Plans
+///
+/// @todo Add APIs for the 2nd RA8875 PWM channel. If the frequency can be independently
+///     controlled, it could be used as a simple beeper.
+/// @todo Figure out how to "init()" in the constructor. I ran into some issues if
+///     the display was instantiated before main(), and the code would not run,
+///     thus the exposure and activation of the init() function. If the constructor
+///     was within main(), then it seemed to work as expected.
 ///
-/// @section Display_Config Display Configuration
+/// @note As the author of this library, let me state that I am not affiliated with
+///     Raio (silicon provider of the RA8875), or with BuyDisplay.com (where a lot 
+///     of these displays can be purchased), I am simply a very satisfied customer 
+///     of the technology of the RA8875 chip.
+///
+/// @copyright Copyright © 2012-2019 by Smartware Computing, all rights reserved.
+///     This library is predominantly, that of Smartware Computing, however some
+///     portions are compiled from the work of others. Where the contribution of 
+///     others was listed as copyright, that copyright is maintained, even as a 
+///     derivative work may have been created for better integration in this library.
+///     See @ref Copyright_References.
+///
+/// @page Copyright_References Copyright References
+/// 
+/// Following are links to the known copyright references. If I overlooked any, it was
+/// unintentional - please let me know so I can update it. Some portions of the code
+/// have been acquired from the cloud, and where any copyright information was available,
+/// it was preserved.
+///
+/// * @ref GraphicDisplay_Copyright
+/// * @ref TextDisplay_Copyright
+/// * @ref TinyJPEGDecompressor_Copyright
+/// * @ref RA8875::TouchPanelComputeCalibration
+///
+/// @page Display_Config Display Configuration
 ///
 /// This section details basics for bringing the display online. At a minimum,
-/// the display is instantiated. After that any of the available commands
+/// the display is instantiated, after which nearly any of the available commands
 /// may be issued.
 ///
 /// During the instantiation, the display is powered on, cleared, and the backlight
 /// is energized. Additionally, the keypad and touchscreen features are activated.
-/// It is important to keep in mind that the keypad had the default mapping, and
-/// the touchscreen does not have the calibration matrix configured, so additional
-/// steps may be necessary.
+/// It is important to keep in mind that the keypad has its default mapping, 
+/// a resistive touchscreen does not yet have the calibration matrix configured, 
+/// and the RA8875::init() function is required to configure other important options
+/// like the display resolution.
 /// 
 /// @code 
 /// RA8875 lcd(p5, p6, p7, p12, NC, "tft");
@@ -37,34 +107,164 @@
 /// ...
 /// @endcode
 ///
-/// @section Touch_Panel Touch Panel
+/// @section RA8875_Capabilities Basic Capabilities
+/// @subsection RA8875_Resolution Display Resolution
+/// There are two very common display resolutions that use the RA8875:
+/// * 480 x 272 pixels
+/// * 800 x 480 pixels
+///
+/// @subsection RA8875_Layers Display Layers
+/// The RA8875 Controller, depending on the resolution and color depth, can support 
+/// multiple display layers.
+///
+/// * 1 Layer - when the color depth is 16 bits per pixel
+/// * 2 Layers - when the color depth is 8 bits per pixel and the resolution is 480 x 272.
 ///
-/// The supported touch panel interface is for a resistive panel, and is natively 
-/// supported by the RA8875 controller. There are a few steps to enable this interface.
+///
+///
+/// @page Touch_Panel Touch Panel
+///
+/// There is support for various touch panel interfaces.
+/// * @ref Resistive_Touch_Panel - native control for a resistive touch panel. 
+///     There are a few steps to enable this interface.
+/// * @ref CapSense_FT5206 - FT5206 capacitive touch controller, integrated in 
+///     several popular RA8875-based displays. See @ref Capacitive_Touch_Panel.
+/// * @ref CapSense_GSL1680 - GSL1680 capacitive touch controller, integrated in 
+///     several popular RA8875-based displays. See @ref Capacitive_Touch_Panel.
+///
 ///
-/// @subsection Touch_Panel_Enable Touch Panel Enable
+///
+/// @page Hardwired_KeyPad Hardwired Keypad
+///
+/// The RA8875 controller supports a hardwired matrix of keys, which can be used to
+/// easily monitor for up to 20 keys (4 x 5 matrix). It is quite flexible, so these
+/// could be a set of independent functions, or they could be wired as a simple 
+/// calculator or telephone style of keypad.
+///
+/// Various parameters can be configured, such as the scan rate, using @ref RA8875::KeypadInit().
+/// The keypad has a default keypad mapping, but there is an API that permits
+/// installing a custom @ref RA8875::SetKeyMap().
 ///
-/// See @ref TouchPanelInit has two forms - fully automatic, and controlled. See the APIs for
-/// details.
+/// @page Resistive_Touch_Panel Resistive Touch Panel
+///
+/// The RA8875 controller supports a native resistive touchscreen interface than can
+/// track a single touch-point. 
 ///
-/// @subsection Touch_Panel_Calibration
+/// If your display has this option, you can easily accept touch input, but it comes with
+/// some additional requirements - calibration being the primary concern.
+///
+/// @section Touch_Panel_Enable Touch Panel Enable
+///
+/// @ref RA8875::TouchPanelInit() has two forms - one fully automatic, and more controlled. 
+/// See the APIs for details.
+///
+/// @section Touch_Panel_Calibration
 /// 
 /// The touch panel is not initially calibrated on startup. The application should 
 /// provide a means to activate the calibration process, and that should not require
 /// the touchscreen as it may not yet be usable. Alternately, a calibration matrix
 /// can be loaded from non-volatile and installed.
 ///
-/// @section Keypad Keypad
+/// @page Capacitive_Touch_Panel Capacitive Touch Panel
+///
+/// Common to many of the commercially available display modules that use the RA8875 is
+/// an option for a capacitive sense touch screen [Cap Sense] There are two known Cap Sense
+/// controllers that this library can work with:
+///
+/// * @ref CapSense_FT5206.
+/// * @ref CapSense_GSL1680.
+/// 
+/// @page CapSense_FT5206 Capacitive Sense - FT5206 Controller
+///
+/// This is the more common controller. It supports up to 5 simultaneous touch point
+/// tracking.
+///
+/// @page CapSense_GSL1680 Capacitive Sense - GSL1680 Controller
+///
+/// This is the less common controller. It supports either 5 or 10 simultaneous touch point
+/// tracking, depending on the firmware installed in the controller.
+///
+/// @page Example_Program Example Program
+///
+/// This is just a small sample of what can be done, and what it can look like:
+/// @image html Example_Program.png "Example Program"
 ///
-/// The keypad has a default keypad mapping, but there is an API that permits
-/// installing a custom keymap.
+/// @code
+/// // Small test program
+/// #include "mbed.h"       // Working: v146, not fully working: v147
+/// #include "RA8875.h"     // Working: v149
+/// RA8875 lcd(p5, p6, p7, p12, NC, "tft");
+///  
+/// int main()
+/// {
+///     lcd.init(480,272,16,100);
+///     lcd.printf("printing 3 x 2 = %d", 3*2);
+///     lcd.circle(       400,25,  25,               BrightRed);
+///     lcd.fillcircle(   400,25,  15,               RGB(128,255,128));
+///     lcd.ellipse(      440,75,  35,20,            BrightBlue);
+///     lcd.fillellipse(  440,75,  25,10,            Blue);
+///     lcd.triangle(     440,100, 475,110, 450,125, Magenta);
+///     lcd.filltriangle( 445,105, 467,111, 452,120, Cyan);
+///     lcd.rect(         400,130, 475,155,          Brown);
+///     lcd.fillrect(     405,135, 470,150,          Pink);
+///     lcd.roundrect(    410,160, 475,190, 10,8,    Yellow);
+///     lcd.fillroundrect(415,165, 470,185,  5,3,    Orange);
+///     lcd.line(         430,200, 460,230,          RGB(0,255,0));
+///     for (int i=0; i<=30; i+=5) 
+///         lcd.pixel(435+i,200+i, White);
+/// }
+/// @endcode
 ///
-/// @todo Add APIs for the 2nd PWM channel, which might be quite useful as a simple
-///     beeper.
-/// @todo Figure out how to "init()" in the constructor. I ran into some issues if
-///     the display was instantiated before main(), and the code would not run,
-///     thus the exposure and activation of the init() function. If the constructor
-///     was within main(), then it seemed to work as expected.
+/// @page Wiring_Diagram Example Wiring Diagram
+///
+/// This library was crafted around the 4-Wire SPI interface. This was the chosen 
+/// interface method in order to balance the requirements of the host micro IO with 
+/// the capability of this display. Alternatives include: 3-Wire SPI, I2C, 8-bit and
+/// 16-bit parallel.
+/// 
+/// @image html Example_Wiring.png "Example Wiring Diagram"
+///
+/// @page Future_Plans Future Plans
+///
+/// Following are some notions of future plans. This does not mean they will all be
+/// implemented, just consider them as things I'm thinking about. If you have a suggestion,
+/// please send it to me.
+///
+/// - Change the return values for several functions. Most functions return @ref RA8875::RetCode_t,
+///     but would benefit from returning a data type related to that function. For example,
+///     @ref RA8875::SelectDrawingLayer() could return the current drawing layer even as a new
+///     layer is defined. This can facilitate switching back and forth between configurations.
+///     Examples:
+///     - @ref RA8875::SelectDrawingLayer()
+///     - @ref RA8875::SelectUserFont()
+///     - @ref RA8875::SetBackgroundTransparencyColor()
+///     - @ref RA8875::SetLayerMode()
+///     - @ref RA8875::SetLayerTransparency()
+///     - @ref RA8875::SetOrientation()
+///     - @ref RA8875::SetTextCursor()
+///     - @ref RA8875::SetTextCursorControl()
+///     - @ref RA8875::SetTextFont()
+///     - @ref RA8875::SetTextFontControl()
+///     - @ref RA8875::SetTextFontSize()
+///     - @ref RA8875::background()
+///     - @ref RA8875::foreground()
+///     - @ref RA8875::Backlight()
+///     - @ref RA8875::window()
+///     - @ref RA8875::WindowMax()
+///
+/// - Change the title-case of the functions to be consistent. Because this was adapted 
+///     from parts of several different libraries, it isn't very consistently titled.
+///
+/// - Change names of some of the functions to be more consistent. Why are some Set* 
+///     and others are Select*. The layer commands SetDrawingLayer and GetDrawingLayer do
+///     not need 'Drawing' in them.
+///
+/// - Improve the PrintScreen method. There are two functions - one that accepts a filename, 
+///     and a second more experimental version that could pipe the image stream back to
+///     a calling process. This could be used, for example, to send the image over a
+///     network interface. The intended side effect is that there is then only a single
+///     PrintScreen method with either an internal helper (for file system access) or
+///     a callback for the user handled process.
 ///
 #ifndef RA8875_H
 #define RA8875_H
@@ -89,7 +289,57 @@
 // .cpp file. See also the bottom of this file.
 //#define TESTENABLE
 
-/// DOS colors - slightly color enhanced
+/// @page PredefinedColors Predefined Colors
+///
+/// Keep in mind that the color scheme shown here is unlikely to precisely match
+/// that on the actual display. The perceived color is additional affected by 
+/// other attributes, such as the backlight brightness.
+///
+/// These are the predefined colors that are typically used where any @ref color_t 
+/// variable is applied.
+///
+/// <blockquote>
+/// <table>
+/// <tr>
+/// <td bgcolor='#000000'>&nbsp;</td><td>@ref Black</td>
+/// <td bgcolor='#0000BB'>&nbsp;</td><td>@ref Blue</td>
+/// <td bgcolor='#00BB00'>&nbsp;</td><td>@ref Green</td>
+/// <td bgcolor='#00BBBB'>&nbsp;</td><td>@ref Cyan</td>
+/// </tr>
+/// <tr>
+/// <td bgcolor='#BB0000'>&nbsp;</td><td>@ref Red</td>
+/// <td bgcolor='#BB00BB'>&nbsp;</td><td>@ref Magenta</td>
+/// <td bgcolor='#3F3F3F'>&nbsp;</td><td>@ref Brown</td>
+/// <td bgcolor='#BBBBBB'>&nbsp;</td><td>@ref Gray</td>
+/// </tr>
+/// <tr>
+/// <td bgcolor='#555555'>&nbsp;</td><td>@ref Charcoal</td>
+/// <td bgcolor='#0000FF'>&nbsp;</td><td>@ref BrightBlue</td>
+/// <td bgcolor='#00FF00'>&nbsp;</td><td>@ref BrightGreen</td>
+/// <td bgcolor='#00FFFF'>&nbsp;</td><td>@ref BrightCyan</td>
+/// </tr>
+/// <tr>
+/// <td bgcolor='#FF5555'>&nbsp;</td><td>@ref Orange</td>
+/// <td bgcolor='#FF55FF'>&nbsp;</td><td>@ref Pink</td>
+/// <td bgcolor='#BBBB00'>&nbsp;</td><td>@ref Yellow</td>
+/// <td bgcolor='#FFFFFF'>&nbsp;</td><td>@ref White</td>
+/// </tr>
+/// <tr>
+/// <td bgcolor='#00003F'>&nbsp;</td><td>@ref DarkBlue </td>
+/// <td bgcolor='#003F00'>&nbsp;</td><td>@ref DarkGreen</td>
+/// <td bgcolor='#003F3F'>&nbsp;</td><td>@ref DarkCyan </td>
+/// <td bgcolor='#3F0000'>&nbsp;</td><td>@ref DarkRed  </td>
+/// </tr>
+/// <tr>
+/// <td bgcolor='#3F003F'>&nbsp;</td><td>@ref DarkMagenta</td>
+/// <td bgcolor='#3F3F00'>&nbsp;</td><td>@ref DarkBrown  </td>
+/// <td bgcolor='#3F3F3F'>&nbsp;</td><td>@ref DarkGray   </td>
+/// <td bgcolor='#FFFFFF'>&nbsp;</td><td>&nbsp;</td>
+/// </tr>
+/// </table>
+/// </blockquote>
+///
+
 #define Black       (color_t)(RGB(0,0,0))
 #define Blue        (color_t)(RGB(0,0,187))
 #define Green       (color_t)(RGB(0,187,0))
@@ -172,16 +422,16 @@
 class RA8875 : public GraphicsDisplay
 {
 public:   
-    /// cursor type to be shown as the text cursor.
+    /// cursor type argument for @ref SetTextCursorControl()
     typedef enum
     {
         NOCURSOR,   ///< cursor is hidden
-        IBEAM,      ///< | cursor
-        UNDER,      ///< _ cursor
+        IBEAM,      ///< I Beam '|' cursor
+        UNDER,      ///< Underscore '_' cursor
         BLOCK       ///< Block cursor
     } cursor_t;
 
-    /// font type selection.
+    /// font type selection argument for @ref SetTextFont()
     typedef enum
     {
         ISO8859_1,      ///< ISO8859-1 font
@@ -190,7 +440,8 @@
         ISO8859_4       ///< ISO8859-4 font
     } font_t;
     
-    /// display orientation
+    /// display orientation argument for @ref SetOrientation()
+    /// with landscape mode as the normal (0 degree) orientation.
     typedef enum
     {
         normal,         ///< normal (landscape) orientation
@@ -200,27 +451,27 @@
         rotate_270,     ///< rotated clockwise 270 degree
     } orientation_t;
     
-    /// alignment  
+    /// alignment control argument for @ref SetTextFontControl()
     typedef enum
     {
         align_none,     ///< align - none
         align_full      ///< align - full
     } alignment_t;    
     
-    /// Font Horizontal Scale factor - 1, 2, 3 4
+    /// Font Horizontal Scale factor - 1, 2, 3 4 for @ref SetTextFontSize(), @ref GetTextFontSize()
     typedef int HorizontalScale;
     
-    /// Font Vertical Scale factor - 1, 2, 3, 4
+    /// Font Vertical Scale factor - 1, 2, 3, 4 for @ref SetTextFontSize(), @ref GetTextFontSize()
     typedef int VerticalScale;
 
-    /// Clear screen region
+    /// Clear screen region option for @ref clsw()
     typedef enum
     {
         FULLWINDOW,     ///< Full screen
         ACTIVEWINDOW    ///< active window/region
     } Region_t;
-    
-    /// Set the Layer Display Mode. @ref SetLayerMode
+
+    /// Layer Display Mode argument for @ref SetLayerMode, @ref GetLayerMode
     typedef enum
     {
         ShowLayer0,         ///< Only layer 0 is visible, layer 1 is hidden (default)
@@ -239,7 +490,7 @@
         TP_Manual,             ///< Manual touch detection mode
     } tpmode_t;
 
-    /// PrintScreen callback commands
+    /// PrintScreen callback commands for the user code @ref PrintCallback_T()
     typedef enum
     {
         OPEN,       ///< command to open the file. cast uint32_t * to the buffer to get the total size to be written.
@@ -282,11 +533,11 @@
     /// @param cmd is the command to execute. See @ref filecmd_t.
     /// @param buffer is a pointer to the buffer being passed.
     /// @param size is the number of bytes in the buffer.
-    /// @returns the noerror signal.
+    /// @returns @ref RetCode_t value.
     ///
     typedef RetCode_t (* PrintCallback_T)(filecmd_t cmd, uint8_t * buffer, uint16_t size);
     
-    /// Idle reason provided in the Idle Callback
+    /// Idle reason provided in the Idle Callback @ref IdleCallback_T()
     typedef enum {
         unknown,            ///< reason has not been assigned (this should not happen)
         status_wait,        ///< driver is polling the status register while busy
@@ -326,8 +577,7 @@
     /// @param reason informs the callback why it is idle.
     /// @param param is a 2nd parameter, which is used for certain reason codes
     ///        for 'progress' reason code, param ranges from 0 to 100 (percent)
-    /// @returns noerror to allow the driver continue waiting.
-    /// @returns external_abort if the pending action should be aborted.
+    /// @returns @ref RetCode_t value.
     ///
     typedef RetCode_t (* IdleCallback_T)(IdleReason_T reason, uint16_t param = 0);
 
@@ -476,13 +726,13 @@
     ///             parameter causes the driver to initialize.
     ///             - If the constructor was called without support for the capacitive driver, this
     ///             parameter is used to enable and initialize the resistive touchscreen driver.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t init(int width = 480, int height = 272, int color_bpp = 16, 
         uint8_t poweron = 40, bool keypadon = true, bool touchscreeenon = true);
 
 
-    /// Get a pointer to the error code.
+    /// Get a pointer to the text string representing the RetCode_t
     ///
     /// This method returns a pointer to a text string that matches the
     /// code. See @ref RetCode_t.
@@ -523,7 +773,7 @@
     /// @param[out] prevLayer is an optiona pointer to where the previous layer
     ///     will be written, making it a little easer to restore layers.
     ///     Writes 0 or 1 when the pointer is not NULL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t SelectDrawingLayer(uint16_t layer, uint16_t * prevLayer = NULL);
  
@@ -568,7 +818,7 @@
     /// @endcode
     ///
     /// @param[in] mode sets the mode in the Layer Transparency Register.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetLayerMode(LayerMode_T mode);
  
@@ -599,7 +849,7 @@
     ///
     /// @param[in] layer1 sets the layer 1 transparency.
     /// @param[in] layer2 sets the layer 2 transparency.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     /// 
     RetCode_t SetLayerTransparency(uint8_t layer1, uint8_t layer2);
  
@@ -611,7 +861,7 @@
     /// 
     /// @param[in] color is optional and expressed in 16-bit format. If not
     ///     supplied, a default of Black is used.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetBackgroundTransparencyColor(color_t color = RGB(0,0,0));
  
@@ -635,7 +885,7 @@
     /// Additionally, for an even simpler interface for most RESISTIVE
     /// touch use cases, the init() method can perform the calibration.
     ///
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t TouchPanelInit(void);
         
@@ -680,7 +930,7 @@
     ///                                 - TP_ADC_SAMPLE_16384_CLKS: Wait 16384 system clocks   
     ///                                 - TP_ADC_SAMPLE_32768_CLKS: Wait 32768 system clocks   
     ///                                 - TP_ADC_SAMPLE_65536_CLKS: Wait 65536 system clocks
-    /// @returns success/failure code. See @ref RetCode_t.   
+    /// @returns @ref RetCode_t value.   
     ///
     RetCode_t TouchPanelInit(uint8_t bTpEnable, uint8_t bTpAutoManual, uint8_t bTpDebounce, 
         uint8_t bTpManualMode, uint8_t bTpAdcClkDiv, uint8_t bTpAdcSampleTime);
@@ -928,7 +1178,7 @@
     ///     for further details. See also the article
     ///     http://www.embedded.com/design/system-integration/4023968/How-To-Calibrate-Touch-Screens
     ///
-    /// @copyright Copyright (c) 2001, Carlos E. Vidales. All rights reserved.
+    /// @copyright Copyright &copy; 2001, Carlos E. Vidales. All rights reserved.
     ///     This sample program was written and put in the public domain 
     ///      by Carlos E. Vidales.  The program is provided "as is" 
     ///      without warranty of any kind, either expressed or implied.
@@ -954,7 +1204,7 @@
     /// @param[out] matrix is an optional parameter to hold the calibration matrix 
     ///             as a result of the calibration. This can be saved in  
     ///             non-volatile memory to recover the calibration after a power fail.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t TouchPanelComputeCalibration(point_t display[3], point_t screen[3], tpMatrix_t * matrix);
 
@@ -970,7 +1220,7 @@
     /// @param[out] matrix is an optional parameter to hold the calibration matrix 
     ///             as a result of the calibration. This can be saved in  
     ///             non-volatile memory to recover the calibration after a power fail.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t TouchPanelCalibrate(tpMatrix_t * matrix = NULL);
 
@@ -991,7 +1241,7 @@
     /// @param[in] maxwait_s is the maximum number of seconds to wait for a touch
     ///             calibration. If no touch panel installed, it then reports
     ///             touch_cal_timeout. Default: 30 s.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t TouchPanelCalibrate(const char * msg, tpMatrix_t * matrix = NULL, int maxwait_s = 30);
 
@@ -1016,7 +1266,7 @@
     /// @endcode
     /// 
     /// @param[in] matrix is a pointer to the touch panel calibration matrix.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t TouchPanelSetMatrix(tpMatrix_t * matrix);
 
@@ -1076,7 +1326,7 @@
     /// @param[in] interruptEnable when true, enables interrupts from keypress (default: false).
     /// @param[in] wakeupEnable when true, activates the wakeup function (default: false).
     ///
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t  KeypadInit(bool scanEnable = true, bool longDetect = false, 
         uint8_t sampleTime = 0, uint8_t scanFrequency = 0, 
@@ -1119,7 +1369,7 @@
     ///             from raw code to your reassigned value.
     ///            If CodeList is NULL, the original raw value key map is
     ///             restored.
-    /// @returns noerror.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetKeyMap(const uint8_t * CodeList = NULL);
 
@@ -1189,7 +1439,7 @@
     /// @returns true if pRect1 and pRect2 intersect and pRect1 is written with
     ///             the rectangle describing the intersection.
     ///
-    bool Intersect(rect_t * rect1, const rect_t * rect2);
+    bool Intersect(rect_t * pRect1, const rect_t * pRect2);
     
     
     /// Write a command to the display with a word of data.
@@ -1198,7 +1448,7 @@
     ///
     /// @param[in] command is the command to write.
     /// @param[in] data is data to be written to the command register.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t WriteCommandW(uint8_t command, uint16_t data);
 
@@ -1210,7 +1460,7 @@
     /// @param[in] command is the command to write.
     /// @param[in] data is optional data to be written to the command register
     ///     and only occurs if the data is in the range [0 - 0xFF].
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t WriteCommand(unsigned char command, unsigned int data = 0xFFFF);
 
@@ -1220,7 +1470,7 @@
     /// This is a high level command, and may invoke several primitives.
     ///
     /// @param[in] data is the data to write.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t WriteDataW(uint16_t data);
 
@@ -1230,7 +1480,7 @@
     /// This is a high level command, and may invoke several primitives.
     ///
     /// @param[in] data is the data to write.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t WriteData(unsigned char data);
 
@@ -1330,7 +1580,7 @@
     /// 
     /// @param[in] column is the horizontal position in character positions
     /// @param[in] row is the vertical position in character positions
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t locate(textloc_t column, textloc_t row);
 
@@ -1345,7 +1595,7 @@
     ///
     /// @param[in] x is the horizontal position in pixels (from the left edge)
     /// @param[in] y is the vertical position in pixels (from the top edge)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetTextCursor(loc_t x, loc_t y);
 
@@ -1360,7 +1610,7 @@
     /// @endcode
     ///
     /// @param[in] p is the x:y point in pixels from the top-left.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetTextCursor(point_t p);
 
@@ -1401,7 +1651,7 @@
     /// @param[in] cursor can be set to NOCURSOR (default), IBEAM,
     ///         UNDER, or BLOCK.
     /// @param[in] blink can be set to true or false (default false)
-    /// @returns success/failure code. See @ref RetCode_t
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetTextCursorControl(cursor_t cursor = NOCURSOR, bool blink = false);
 
@@ -1417,7 +1667,7 @@
     ///
     /// @note if either hScale or vScale is outside of its permitted range,
     ///     the command is not executed.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetTextFont(font_t font = ISO8859_1);
     
@@ -1459,7 +1709,7 @@
     ///         - rotate_90 (clockwise)
     ///         - rotate_180
     ///         - rotate_270 (clockwise)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetOrientation(orientation_t angle = normal);
     
@@ -1494,7 +1744,7 @@
     /// 
     /// @note if either hScale or vScale is outside of its permitted range,
     ///     the command is not executed.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetTextFontControl(fill_t fillit = FILL, 
         HorizontalScale hScale = 1, 
@@ -1531,7 +1781,7 @@
     ///
     /// @note if either hScale or vScale is outside of its permitted range,
     ///     the command is not executed.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t SetTextFontSize(HorizontalScale hScale = 1, VerticalScale vScale = -1);
 
@@ -1546,7 +1796,7 @@
     ///     will be written. If the pointer is null, that item will be ignored.
     /// @param[out] vScale is a pointer to memory where the vertical scale factor
     ///     will be written. If the pointer is null, that item will be ignored.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t GetTextFontSize(HorizontalScale * hScale, VerticalScale * vScale);
 
@@ -1587,7 +1837,7 @@
     ///
     /// @param[in] x is the horizontal position in pixels (from the left edge)
     /// @param[in] y is the vertical position in pixels (from the top edge)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t SetGraphicsCursor(loc_t x, loc_t y);
 
@@ -1595,7 +1845,7 @@
     /// the memory cursor.
     ///
     /// @param[in] p is the point representing the cursor position to set
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t SetGraphicsCursor(point_t p);
     
@@ -1611,7 +1861,7 @@
     ///
     /// @param[in] x is the horizontal position in pixels (from the left edge)
     /// @param[in] y is the vertical position in pixels (from the top edge)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t SetGraphicsCursorRead(loc_t x, loc_t y);
     
@@ -1638,7 +1888,7 @@
     /// @endcode
     ///
     /// @param[in] r is the rect_t used to set the window.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t window(rect_t r);
     
@@ -1669,7 +1919,7 @@
     /// @param[in] y is the top edge in pixels.
     /// @param[in] width is the window width in pixels.
     /// @param[in] height is the window height in pixels.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t window(loc_t x = 0, loc_t y = 0, dim_t width = (dim_t)-1, dim_t height = (dim_t)-1);
     
@@ -1690,7 +1940,7 @@
     ///     1 is set, layer 1 is cleared. If both are set, both layers
     ///     are cleared. Any other value does not cause an action.
     ///     
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t cls(uint16_t layers = 0);
 
@@ -1708,7 +1958,7 @@
     ///
     /// @param[in] region is an optional parameter that defaults to FULLWINDOW
     ///         or may be set to ACTIVEWINDOW.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t clsw(RA8875::Region_t region = FULLWINDOW);
 
@@ -1716,7 +1966,7 @@
     /// Set the background color.
     ///
     /// @param[in] color is expressed in 16-bit format.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t background(color_t color);
 
@@ -1726,7 +1976,7 @@
     /// @param[in] r is the red element of the color.
     /// @param[in] g is the green element of the color.
     /// @param[in] b is the blue element of the color.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t background(unsigned char r, unsigned char g, unsigned char b);
     
@@ -1734,7 +1984,7 @@
     /// Set the foreground color.
     ///
     /// @param[in] color is expressed in 16-bit format.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t foreground(color_t color);
     
@@ -1744,14 +1994,14 @@
     /// @param[in] r is the red element of the color.
     /// @param[in] g is the green element of the color.
     /// @param[in] b is the blue element of the color.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t foreground(unsigned char r, unsigned char g, unsigned char b);
     
     
     /// Get the current foreground color value.
     ///
-    /// @returns the current foreground color.
+    /// @returns the current foreground color as @ref color_t.
     ///
     color_t GetForeColor(void);
     
@@ -1762,7 +2012,8 @@
     ///         set the forecolor!
     ///
     /// @param[in] p is the point_t defining the location.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @param[in] color is expressed in 16-bit format.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t pixel(point_t p, color_t color);
     
@@ -1770,7 +2021,7 @@
     /// Draw a pixel in the current foreground color.
     ///
     /// @param[in] p is the point_t defining the location.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t pixel(point_t p);
     
@@ -1783,7 +2034,7 @@
     /// @param[in] x is the horizontal offset to this pixel.
     /// @param[in] y is the vertical offset to this pixel.
     /// @param[in] color defines the color for the pixel.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t pixel(loc_t x, loc_t y, color_t color);
     
@@ -1792,7 +2043,7 @@
     ///
     /// @param[in] x is the horizontal offset to this pixel.
     /// @param[in] y is the veritical offset to this pixel.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t pixel(loc_t x, loc_t y);
     
@@ -1801,7 +2052,7 @@
     ///
     /// @param[in] x is the horizontal offset to this pixel.
     /// @param[in] y is the vertical offset to this pixel.
-    /// @returns the pixel. see @color_t
+    /// @returns the pixel. See @ref color_t
     ///
     virtual color_t getPixel(loc_t x, loc_t y);
     
@@ -1812,7 +2063,7 @@
     /// @param[in] count is the number of pixels to write.
     /// @param[in] x is the horizontal position on the display.
     /// @param[in] y is the vertical position on the display.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t pixelStream(color_t * p, uint32_t count, loc_t x, loc_t y);
     
@@ -1823,7 +2074,7 @@
     /// @param[in] count is the number of pixels to read.
     /// @param[in] x is the horizontal offset to this pixel.
     /// @param[in] y is the vertical offset to this pixel.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t getPixelStream(color_t * p, uint32_t count, loc_t x, loc_t y);
 
@@ -1849,7 +2100,7 @@
     /// @param[in] h is the height of the rectangular region to fill.
     /// @param[in] boolStream is the inline memory image from which to extract
     ///         the bitstream.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t booleanStream(loc_t x, loc_t y, dim_t w, dim_t h, const uint8_t * boolStream);
 
@@ -1862,7 +2113,7 @@
     /// @param[in] p1 is the point to start the line.
     /// @param[in] p2 is the point to end the line.
     /// @param[in] color defines the foreground color.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t line(point_t p1, point_t p2, color_t color);
 
@@ -1873,7 +2124,7 @@
     ///
     /// @param[in] p1 is the point to start the line.
     /// @param[in] p2 is the point to end the line.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t line(point_t p1, point_t p2);
 
@@ -1888,7 +2139,7 @@
     /// @param[in] x2 is the horizontal end of the line.
     /// @param[in] y2 is the vertical end of the line.
     /// @param[in] color defines the foreground color.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t line(loc_t x1, loc_t y1, loc_t x2, loc_t y2, color_t color);
 
@@ -1901,7 +2152,7 @@
     /// @param[in] y1 is the vertical start of the line.
     /// @param[in] x2 is the horizontal end of the line.
     /// @param[in] y2 is the vertical end of the line.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t line(loc_t x1, loc_t y1, loc_t x2, loc_t y2);
 
@@ -1923,7 +2174,7 @@
     /// @param[in] p2 is the point to end the line.
     /// @param[in] thickness is the line thickness.
     /// @param[in] color defines the foreground color.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     /// 
     RetCode_t ThickLine(point_t p1, point_t p2, dim_t thickness, color_t color);
 
@@ -1936,7 +2187,7 @@
     /// @param[in] rect defines the rectangle.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t rect(rect_t rect, color_t color, fill_t fillit = NOFILL);
     
@@ -1949,7 +2200,7 @@
     /// @param[in] rect defines the rectangle.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t fillrect(rect_t rect, color_t color, fill_t fillit = FILL);
 
@@ -1965,7 +2216,7 @@
     /// @param[in] y2 is the vertical end of the line.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is FILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t rect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         color_t color, fill_t fillit = NOFILL);
@@ -1982,7 +2233,7 @@
     /// @param[in] y2 is the vertical end of the line.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to NOFILL the rectangle. default is FILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t fillrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         color_t color, fill_t fillit = FILL);
@@ -1997,7 +2248,7 @@
     /// @param[in] x2 is the horizontal end of the line.
     /// @param[in] y2 is the vertical end of the line.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t rect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         fill_t fillit = NOFILL);
@@ -2025,7 +2276,7 @@
     ///         is returned.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t fillroundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         dim_t radius1, dim_t radius2, color_t color, fill_t fillit = FILL);
@@ -2050,7 +2301,7 @@
     ///         is returned.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t fillroundrect(rect_t r, 
         dim_t radius1, dim_t radius2, color_t color, fill_t fillit = FILL);
@@ -2075,7 +2326,7 @@
     ///         is returned.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t roundrect(rect_t r, 
         dim_t radius1, dim_t radius2, color_t color, fill_t fillit = NOFILL);
@@ -2103,7 +2354,7 @@
     ///         is returned.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t roundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         dim_t radius1, dim_t radius2, color_t color, fill_t fillit = NOFILL);
@@ -2127,7 +2378,7 @@
     ///         that this value < 1/2 the height of the rectangle, or bad_parameter 
     ///         is returned.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t roundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         dim_t radius1, dim_t radius2, fill_t fillit = NOFILL);
@@ -2146,7 +2397,7 @@
     /// @param[in] y3 is the vertical for point 3.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t triangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         loc_t x3, loc_t y3, color_t color, fill_t fillit = NOFILL);
@@ -2165,7 +2416,7 @@
     /// @param[in] y3 is the vertical for point 3.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t filltriangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         loc_t x3, loc_t y3, color_t color, fill_t fillit = FILL);
@@ -2182,7 +2433,7 @@
     /// @param[in] x3 is the horizontal for point 3.
     /// @param[in] y3 is the vertical for point 3.
     /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t triangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
         loc_t x3, loc_t y3, fill_t fillit = NOFILL);
@@ -2197,7 +2448,7 @@
     /// @param[in] radius defines the size of the circle.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the circle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t circle(point_t p, dim_t radius, color_t color, fill_t fillit = NOFILL);
 
@@ -2211,7 +2462,7 @@
     /// @param[in] radius defines the size of the circle.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the circle. default is FILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t fillcircle(point_t p, dim_t radius, color_t color, fill_t fillit = FILL);
 
@@ -2223,7 +2474,7 @@
     /// @param[in] p defines the center of the circle.
     /// @param[in] radius defines the size of the circle.
     /// @param[in] fillit is optional to FILL the circle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t circle(point_t p, dim_t radius, fill_t fillit = NOFILL);
 
@@ -2238,7 +2489,7 @@
     /// @param[in] radius defines the size of the circle.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the circle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t circle(loc_t x, loc_t y, dim_t radius, color_t color, fill_t fillit = NOFILL);
 
@@ -2253,7 +2504,7 @@
     /// @param[in] radius defines the size of the circle.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit is optional to FILL the circle. default is FILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t fillcircle(loc_t x, loc_t y, dim_t radius, color_t color, fill_t fillit = FILL);
 
@@ -2266,7 +2517,7 @@
     /// @param[in] y is the vertical center of the circle.
     /// @param[in] radius defines the size of the circle.
     /// @param[in] fillit is optional to FILL the circle. default is NOFILL.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t circle(loc_t x, loc_t y, dim_t radius, fill_t fillit = NOFILL);
 
@@ -2281,7 +2532,7 @@
     /// @param[in] radius2 defines the vertical radius of the ellipse.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit defines whether the circle is filled or not.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t ellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, 
         color_t color, fill_t fillit = NOFILL);
@@ -2298,7 +2549,7 @@
     /// @param[in] radius2 defines the vertical radius of the ellipse.
     /// @param[in] color defines the foreground color.
     /// @param[in] fillit defines whether the circle is filled or not.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t fillellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, 
         color_t color, fill_t fillit = FILL);
@@ -2313,7 +2564,7 @@
     /// @param[in] radius1 defines the horizontal radius of the ellipse.
     /// @param[in] radius2 defines the vertical radius of the ellipse.
     /// @param[in] fillit defines whether the circle is filled or not.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t ellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, fill_t fillit = NOFILL);
     
@@ -2330,6 +2581,8 @@
     /// outside of this API.
     ///
     /// @code
+    /// // Block Move Demo
+    /// 
     /// // Calibrate the resistive touch screen, and store the data on the
     /// // local file system.
     /// //
@@ -2423,7 +2676,7 @@
     ///             (write/read/move/...)
     /// @param[in] bte_rop_code [51.7-4] defines what type of BTE operation to perform
     ///             (what is placed at the destination)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t BlockMove(uint8_t dstLayer, uint8_t dstDataSelect, point_t dstPoint,
         uint8_t srcLayer, uint8_t srcDataSelect, point_t srcPoint,
@@ -2434,14 +2687,14 @@
     /// Control display power
     ///
     /// @param[in] on when set to true will turn on the display, when false it is turned off.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t Power(bool on);
 
 
     /// Reset the display controller via the Software Reset interface.
     ///
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t Reset(void);
     
@@ -2452,7 +2705,7 @@
     /// API can be used to set the brightness.
     /// 
     /// @param[in] brightness ranges from 0 (off) to 255 (full on)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t Backlight_u8(uint8_t brightness);
 
@@ -2469,7 +2722,7 @@
     /// API can be used to set the brightness.
     /// 
     /// @param[in] brightness ranges from 0.0 (off) to 1.0 (full on)
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t Backlight(float brightness);
 
@@ -2489,7 +2742,7 @@
     ///     format.
     ///
     /// @param[in] font is a pointer to a specially formed font resource.
-    /// @returns error code.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t SelectUserFont(const uint8_t * font = NULL);
 
@@ -2499,26 +2752,30 @@
     ///
     virtual const uint8_t * GetUserFont(void) { return font; }
 
-    /// Get the RGB value for a DOS color.
-    ///
+    /// Get the @ref color_t value from a DOS color index.
+    ///
+    /// See @ref PredefinedColors, @ref color_t.
+    /// 
     /// @code
     ///     color_t color = DOSColor(12);
     /// @endcode
     ///
-    /// @param[in] i is the color, in the range 0 to 15;
-    /// @returns the RGB color of the selected index, or 0 
-    ///     if the index is out of bounds.
+    /// @param[in] i is the color index, in the range 0 to 15;
+    /// @returns the @ref color_t value of the selected index, 
+    ///     or 0 (@ref Black) if the index is out of bounds.
     ///
     color_t DOSColor(int i);
 
 
-    /// Get the color name (string) for a DOS color.
-    ///
+    /// Get the color name (string) from a DOS color index.
+    ///
+    /// See @ref PredefinedColors, @ref color_t.
+    /// 
     /// @code
     ///     printf("color is %s\n", DOSColorNames(12));
     /// @endcode
     ///
-    /// @param[in] i is the color, in the range 0 to 15;
+    /// @param[in] i is the color index, in the range 0 to 15;
     /// @returns a pointer to a string with the color name,
     ///     or NULL if the index is out of bounds.
     /// 
@@ -2536,9 +2793,9 @@
     /// be used to send individual pixels to the screen.
     ///
     /// To conclude the graphics stream, See @ref _EndGraphicsStream should
-    /// be callled.
-    ///
-    /// @returns error code.
+    /// be called.
+    ///
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t _StartGraphicsStream(void);
 
@@ -2554,7 +2811,7 @@
     /// @endcode
     ///
     /// @param[in] pixel is a color value to be put on the screen.
-    /// @returns error code.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t _putp(color_t pixel);
 
@@ -2566,7 +2823,7 @@
     /// class in order to stop the hardware from accept the streaming
     /// data.
     ///
-    /// @returns error code.
+    /// @returns @ref RetCode_t value.
     ///
     virtual RetCode_t _EndGraphicsStream(void);
 
@@ -2596,7 +2853,7 @@
     ///     applications as a starting point.
     /// @param[in] Hz2 is an optional parameter and will set the read
     ///     speed independently of the write speed.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t frequency(unsigned long Hz = RA8875_DEFAULT_SPI_FREQ, unsigned long Hz2 = 0);
 
@@ -2623,7 +2880,7 @@
     ///             accepts the values 24, 8
     ///             NOTE: The downscaling is CPU intensive, and the operation
     ///             takes longer.
-    /// @return success or error code.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t PrintScreen(loc_t x, loc_t y, dim_t w, dim_t h, const char *Name_BMP, uint8_t bitsPerPixel = 24);
 
@@ -2651,7 +2908,7 @@
     ///             accepts the values 24, 8
     ///             NOTE: The downscaling is CPU intensive, and the operation
     ///             takes longer.
-    /// @return success or error code.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t PrintScreen(loc_t x, loc_t y, dim_t w, dim_t h, uint8_t bitsPerPixel = 24);
 
@@ -2701,7 +2958,7 @@
     /// @param[in] w is the width of the region to capture
     /// @param[in] h is the height of the region to capture.
     /// @param[out] Name_BMP is the filename to write the image to.
-    /// @return success or error code.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t PrintScreen(uint16_t layer, loc_t x, loc_t y, dim_t w, dim_t h, const char *Name_BMP);
 
@@ -2901,7 +3158,7 @@
     ///
     /// @param[in] regAddr is the register address starting the trio
     /// @param[in] color is the color to write
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t _writeColorTrio(uint8_t regAddr, color_t color);
     
@@ -2936,7 +3193,7 @@
     /// @param[in] chipsel when true will select the peripheral, and when false
     ///     will deselect the chip. This is the logical selection, and
     ///     the pin selection is the invert of this.
-    /// @returns success/failure code. See @ref RetCode_t.
+    /// @returns @ref RetCode_t value.
     ///
     RetCode_t _select(bool chipsel);