Library to control a Graphics TFT connected to 4-wire SPI - revised for the Raio RA8875 Display Controller.

Dependents:   FRDM_RA8875_mPaint RA8875_Demo RA8875_KeyPadDemo SignalGenerator ... more

Fork of SPI_TFT by Peter Drescher

See Components - RA8875 Based Display

Enhanced touch-screen support - where it previous supported both the Resistive Touch and Capacitive Touch based on the FT5206 Touch Controller, now it also has support for the GSL1680 Touch Controller.

Offline Help Manual (Windows chm)

/media/uploads/WiredHome/ra8875.zip.bin (download, rename to .zip and unzip)

Revision:
72:ecffe56af969
Parent:
71:dcac8efd842d
Child:
73:f22a18707b5e
--- a/RA8875.h	Sat Oct 04 17:45:50 2014 +0000
+++ b/RA8875.h	Sat Oct 11 17:24:29 2014 +0000
@@ -174,16 +174,16 @@
     /// }
     /// @endcode
     ///
-    /// @param mosi is the SPI master out slave in pin on the mbed.
-    /// @param miso is the SPI master in slave out pin on the mbed.
-    /// @param sclk is the SPI shift clock pin on the mbed.
-    /// @param csel is the DigitalOut pin on the mbed to use as the
+    /// @param[in] mosi is the SPI master out slave in pin on the mbed.
+    /// @param[in] miso is the SPI master in slave out pin on the mbed.
+    /// @param[in] sclk is the SPI shift clock pin on the mbed.
+    /// @param[in] csel is the DigitalOut pin on the mbed to use as the
     ///         active low chip select for the display controller.
-    /// @param reset is the DigitalOut pin on the mbed to use as the 
+    /// @param[in] reset is the DigitalOut pin on the mbed to use as the 
     ///         active low reset input on the display controller - 
     ///         but this is not currently used.
-    /// @param name is a text name for this object, which will permit
-    ///         capturing stdout and printf() directly to it.
+    /// @param[in] name is a text name for this object, which will permit
+    ///         capturing stdout to puts() and printf() directly to it.
     ///
     RA8875(PinName mosi, PinName miso, PinName sclk, PinName csel, PinName reset, const char * name = "lcd");
     
@@ -212,7 +212,7 @@
     ///     others that reference the layers use the values 0 and 1 for
     ///     cleaner iteration in the code.
     ///
-    /// @param layer is 0 or 1 to select the layer for subsequent 
+    /// @param[in] layer is 0 or 1 to select the layer for subsequent 
     ///     commands.
     /// @returns success/failure code. @see RetCode_t.
     ///
@@ -256,7 +256,7 @@
     ///     lcd.SetLayerMode(ShowLayer1);
     /// @endcode
     ///
-    /// @param mode sets the mode in the Layer Transparency Register.
+    /// @param[in] mode sets the mode in the Layer Transparency Register.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t SetLayerMode(LayerMode_T mode);
@@ -276,8 +276,8 @@
     ///     }
     /// @endcode
     ///
-    /// @param layer1 sets the layer 1 transparency.
-    /// @param layer2 sets the layer 2 transparency.
+    /// @param[in] layer1 sets the layer 1 transparency.
+    /// @param[in] layer2 sets the layer 2 transparency.
     /// @returns success/failure code. @see RetCode_t.
     /// 
     RetCode_t SetLayerTransparency(uint8_t layer1, uint8_t layer2);
@@ -287,7 +287,7 @@
     /// This command sets the background color registers that are used
     /// in the transparent color operations involving the layers.
     /// 
-    /// @param color is optional and expressed in 16-bit format. If not
+    /// @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 RetCode_t.
     ///
@@ -440,8 +440,8 @@
     ///
     /// This is a high level command, and may invoke several primitives.
     ///
-    /// @param command is the command to write.
-    /// @param data is data to be written to the command register.
+    /// @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 RetCode_t.
     ///
     RetCode_t WriteCommandW(uint8_t command, uint16_t data);
@@ -450,8 +450,8 @@
     ///
     /// This is a high level command, and may invoke several primitives.
     ///
-    /// @param command is the command to write.
-    /// @param data is optional data to be written to the command register
+    /// @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 RetCode_t.
     ///
@@ -461,7 +461,7 @@
     ///
     /// This is a high level command, and may invoke several primitives.
     ///
-    /// @param data is the data to write.
+    /// @param[in] data is the data to write.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t WriteDataW(uint16_t data);
@@ -470,14 +470,14 @@
     ///
     /// This is a high level command, and may invoke several primitives.
     ///
-    /// @param data is the data to write.
+    /// @param[in] data is the data to write.
     /// @returns success/failure code. @see RetCode_t.
     ///
     virtual RetCode_t WriteData(unsigned char data);
     
     /// Read a command register
     ///
-    /// @param command is the command register to read.
+    /// @param[in] command is the command register to read.
     /// @returns the value read from the register.
     ///
     unsigned char ReadCommand(unsigned char command);
@@ -550,8 +550,8 @@
 
     /// Set cursor position based on the current font size.
     /// 
-    /// @param column is the horizontal position in character positions
-    /// @param row is the vertical position in character positions
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t locate(textloc_t column, textloc_t row);
@@ -564,8 +564,8 @@
     ///     lcd.puts("Hello");
     /// @endcode
     ///
-    /// @param x is the horizontal position in pixels (from the left edge)
-    /// @param y is the vertical position in pixels (from the top edge)
+    /// @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 RetCode_t.
     ///
     RetCode_t SetTextCursor(loc_t x, loc_t y);
@@ -600,9 +600,9 @@
     /// Cursor visible/hidden, Cursor blink/normal, 
     /// Cursor I-Beam/underscore/box.
     ///
-    /// @param cursor can be set to NOCURSOR (default), IBEAM,
+    /// @param[in] cursor can be set to NOCURSOR (default), IBEAM,
     ///         UNDER, or BLOCK.
-    /// @param blink can be set to true or false (default false)
+    /// @param[in] blink can be set to true or false (default false)
     /// @returns success/failure code. @see RetCode_t
     ///
     RetCode_t SetTextCursorControl(cursor_t cursor = NOCURSOR, bool blink = false);
@@ -611,7 +611,7 @@
     ///
     /// Supported fonts: ISO 8859-1, -2, -3, -4
     ///
-    /// @param font selects the font for the subsequent text rendering.
+    /// @param[in] font selects the font for the subsequent text rendering.
     ///
     /// @note if either hScale or vScale is outside of its permitted range,
     ///     the command is not executed.
@@ -633,13 +633,13 @@
     /// @li Vertical scale x 1
     /// @li alignment
     /// 
-    /// @param fillit defaults to FILL, but can be NOFILL
-    /// @param angle defaults to normal, but can be rotated
-    /// @param hScale defaults to 1, but can be 1, 2, 3, or 4,
+    /// @param[in] fillit defaults to FILL, but can be NOFILL
+    /// @param[in] angle defaults to normal, but can be rotated
+    /// @param[in] hScale defaults to 1, but can be 1, 2, 3, or 4,
     ///     and scales the font size by this amount.
-    /// @param vScale defaults to 1, but can be 1, 2, 3, or 4,
+    /// @param[in] vScale defaults to 1, but can be 1, 2, 3, or 4,
     ///     and scales the font size by this amount.
-    /// @param alignment defaults to align_none, but can be
+    /// @param[in] alignment defaults to align_none, but can be
     ///     align_full.
     /// 
     /// @note if either hScale or vScale is outside of its permitted range,
@@ -658,9 +658,9 @@
     /// and vertical, independent of the rotation, background, and 
     /// alignment. @see SetTextFontControl.
     ///
-    /// @param hScale defaults to 1, but can be 1, 2, 3, or 4,
+    /// @param[in] hScale defaults to 1, but can be 1, 2, 3, or 4,
     ///     and scales the font size by this amount.
-    /// @param vScale is an optional parameter that defaults to the hScale value, 
+    /// @param[in] vScale is an optional parameter that defaults to the hScale value, 
     ///     but can be 1, 2, 3, or 4, and scales the font size by this amount.
     ///
     /// @code
@@ -680,7 +680,7 @@
     
     /// put a character on the screen.
     ///
-    /// @param c is the character.
+    /// @param[in] c is the character.
     /// @returns the character, or EOF if there is an error.
     ///
     virtual int _putc(int c);
@@ -691,7 +691,7 @@
     ///     lcd.puts("Test STring");
     /// @endcode
     ///
-    /// @param string is the null terminated string to send to the display.
+    /// @param[in] string is the null terminated string to send to the display.
     ///
     void puts(const char * string);
     
@@ -701,17 +701,17 @@
     ///     lcd.puts(10,25, "Test STring");
     /// @endcode
     ///
-    /// @param x is the horizontal position in pixels (from the left edge)
-    /// @param y is the vertical position in pixels (from the top edge)
-    /// @param string is the null terminated string to send to the display.
+    /// @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)
+    /// @param[in] string is the null terminated string to send to the display.
     ///
     void puts(loc_t x, loc_t y, const char * string);
     
     /// Prepare the controller to write binary data to the screen by positioning
     /// the memory cursor.
     ///
-    /// @param x is the horizontal position in pixels (from the left edge)
-    /// @param y is the vertical position in pixels (from the top edge)
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t SetGraphicsCursor(loc_t x, loc_t y);
@@ -719,8 +719,8 @@
     /// Prepare the controller to read binary data from the screen by positioning
     /// the memory read cursor.
     ///
-    /// @param x is the horizontal position in pixels (from the left edge)
-    /// @param y is the vertical position in pixels (from the top edge)
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t SetGraphicsCursorRead(loc_t x, loc_t y);
@@ -736,10 +736,10 @@
     ///     lcd.puts("012345678901234567890123456789012345678901234567890");
     /// @endcode
     ///
-    /// @param x is the left edge in pixels.
-    /// @param y is the top edge in pixels.
-    /// @param width is the window width in pixels.
-    /// @param height is the window height in pixels.
+    /// @param[in] x is the left edge in pixels.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t window(loc_t x, loc_t y, dim_t width, dim_t height);
@@ -755,7 +755,7 @@
     ///     lcd.cls();
     /// @endcode
     ///
-    /// @param layers is optional. If not provided, the active layer
+    /// @param[in] layers is optional. If not provided, the active layer
     ///     is cleared. If bit 0 is set, layer 0 is cleared, if bit
     ///     1 is set, layer 1 is cleared. If both are set, both layers
     ///     are cleared. Any other value does not cause an action.
@@ -775,7 +775,7 @@
     ///     lcd.clsw();
     /// @endcode
     ///
-    /// @param region is an optional parameter that defaults to FULLWINDOW
+    /// @param[in] region is an optional parameter that defaults to FULLWINDOW
     ///         or may be set to ACTIVEWINDOW.
     /// @returns success/failure code. @see RetCode_t.
     ///
@@ -783,32 +783,32 @@
 
     /// Set the background color.
     ///
-    /// @param color is expressed in 16-bit format.
+    /// @param[in] color is expressed in 16-bit format.
     /// @returns success/failure code. @see RetCode_t.
     ///
     virtual RetCode_t background(color_t color);
     
     /// Set the background color.
     ///
-    /// @param r is the red element of the color.
-    /// @param g is the green element of the color.
-    /// @param b is the blue element of the color.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t background(unsigned char r, unsigned char g, unsigned char b);
     
     /// Set the foreground color.
     ///
-    /// @param color is expressed in 16-bit format.
+    /// @param[in] color is expressed in 16-bit format.
     /// @returns success/failure code. @see RetCode_t.
     ///
     virtual RetCode_t foreground(color_t color);
     
     /// Set the foreground color.
     ///
-    /// @param r is the red element of the color.
-    /// @param g is the green element of the color.
-    /// @param b is the blue element of the color.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t foreground(unsigned char r, unsigned char g, unsigned char b);
@@ -824,45 +824,45 @@
     /// @note Unlike many other operations, this does not
     ///         set the forecolor!
     ///
-    /// @param x is the horizontal offset to this pixel.
-    /// @param y is the vertical offset to this pixel.
-    /// @param color defines the color for the pixel.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t pixel(loc_t x, loc_t y, color_t color);
     
     /// Draw a pixel in the current foreground color.
     ///
-    /// @param x is the horizontal offset to this pixel.
-    /// @param y is the veritical offset to this pixel.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t pixel(loc_t x, loc_t y);
     
     /// Get a pixel from the display.
     ///
-    /// @param x is the horizontal offset to this pixel.
-    /// @param y is the vertical offset to this pixel.
+    /// @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
     ///
     virtual color_t getPixel(loc_t x, loc_t y);
     
     /// Write a stream of pixels to the display.
     ///
-    /// @param p is a pointer to a color_t array to write.
-    /// @param count is the number of pixels to write.
-    /// @param x is the horizontal position on the display.
-    /// @param y is the vertical position on the display.
+    /// @param[in] p is a pointer to a color_t array to write.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t pixelStream(color_t * p, uint32_t count, loc_t x, loc_t y);
     
     /// Get a stream of pixels from the display.
     ///
-    /// @param p is a pointer to a color_t array to accept the stream.
-    /// @param count is the number of pixels to read.
-    /// @param x is the horizontal offset to this pixel.
-    /// @param y is the vertical offset to this pixel.
+    /// @param[in] p is a pointer to a color_t array to accept the stream.
+    /// @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 RetCode_t.
     ///
     virtual RetCode_t getPixelStream(color_t * p, uint32_t count, loc_t x, loc_t y);
@@ -872,11 +872,11 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal start of the line.
-    /// @param y1 is the vertical start of the line.
-    /// @param x2 is the horizontal end of the line.
-    /// @param y2 is the vertical end of the line.
-    /// @param color defines the foreground color.
+    /// @param[in] x1 is the horizontal start of the line.
+    /// @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.
+    /// @param[in] color defines the foreground color.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t line(loc_t x1, loc_t y1, loc_t x2, loc_t y2, color_t color);
@@ -885,10 +885,10 @@
     ///
     /// Draws a line using the foreground color setting.
     ///
-    /// @param x1 is the horizontal start of the line.
-    /// @param y1 is the vertical start of the line.
-    /// @param x2 is the horizontal end of the line.
-    /// @param y2 is the vertical end of the line.
+    /// @param[in] x1 is the horizontal start of the line.
+    /// @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 RetCode_t.
     ///
     RetCode_t line(loc_t x1, loc_t y1, loc_t x2, loc_t y2);
@@ -898,12 +898,12 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal start of the line.
-    /// @param y1 is the vertical start of the line.
-    /// @param x2 is the horizontal end of the line.
-    /// @param y2 is the vertical end of the line.
-    /// @param color defines the foreground color.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] x1 is the horizontal start of the line.
+    /// @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.
+    /// @param[in] color defines the foreground color.
+    /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t rect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -914,12 +914,12 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal start of the line.
-    /// @param y1 is the vertical start of the line.
-    /// @param x2 is the horizontal end of the line.
-    /// @param y2 is the vertical end of the line.
-    /// @param color defines the foreground color.
-    /// @param fillit is optional to NOFILL the rectangle. default is FILL.
+    /// @param[in] x1 is the horizontal start of the line.
+    /// @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.
+    /// @param[in] color defines the foreground color.
+    /// @param[in] fillit is optional to NOFILL the rectangle. default is FILL.
     /// @returns success/failure code. @see RetCode_t.
     ///
     virtual RetCode_t fillrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -929,11 +929,11 @@
     ///
     /// Draws a rectangle using the foreground color setting.
     ///
-    /// @param x1 is the horizontal start of the line.
-    /// @param y1 is the vertical start of the line.
-    /// @param x2 is the horizontal end of the line.
-    /// @param y2 is the vertical end of the line.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] x1 is the horizontal start of the line.
+    /// @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.
+    /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t rect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -949,18 +949,18 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal start of the line and must be <= x2.
-    /// @param y1 is the vertical start of the line and must be <= y2.
-    /// @param x2 is the horizontal end of the line and must be >= x1.
-    /// @param y2 is the vertical end of the line and must be >= y1.
-    /// @param radius1 defines the horizontal radius of the curved corner. Take care
+    /// @param[in] x1 is the horizontal start of the line and must be <= x2.
+    /// @param[in] y1 is the vertical start of the line and must be <= y2.
+    /// @param[in] x2 is the horizontal end of the line and must be >= x1.
+    /// @param[in] y2 is the vertical end of the line and must be >= y1.
+    /// @param[in] radius1 defines the horizontal radius of the curved corner. Take care
     ///         that this value < 1/2 the width of the rectangle, or bad_parameter 
     ///         is returned.
-    /// @param radius2 defines the vertical radius of the curved corner. Take care
+    /// @param[in] radius2 defines the vertical radius of the curved corner. Take care
     ///         that this value < 1/2 the height of the rectangle, or bad_parameter 
     ///         is returned.
-    /// @param color defines the foreground color.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] color defines the foreground color.
+    /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t fillroundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -976,18 +976,18 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal start of the line and must be <= x2.
-    /// @param y1 is the vertical start of the line and must be <= y2.
-    /// @param x2 is the horizontal end of the line and must be >= x1.
-    /// @param y2 is the vertical end of the line and must be >= y1.
-    /// @param radius1 defines the horizontal radius of the curved corner. Take care
+    /// @param[in] x1 is the horizontal start of the line and must be <= x2.
+    /// @param[in] y1 is the vertical start of the line and must be <= y2.
+    /// @param[in] x2 is the horizontal end of the line and must be >= x1.
+    /// @param[in] y2 is the vertical end of the line and must be >= y1.
+    /// @param[in] radius1 defines the horizontal radius of the curved corner. Take care
     ///         that this value < 1/2 the width of the rectangle, or bad_parameter 
     ///         is returned.
-    /// @param radius2 defines the vertical radius of the curved corner. Take care
+    /// @param[in] radius2 defines the vertical radius of the curved corner. Take care
     ///         that this value < 1/2 the height of the rectangle, or bad_parameter 
     ///         is returned.
-    /// @param color defines the foreground color.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] color defines the foreground color.
+    /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t roundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -1000,17 +1000,17 @@
     /// or a single point (x1 == x2 && y1 == y2). If the radius parameters are
     /// > 1/2 the length of that side (width or height), an error value is returned.
     ///
-    /// @param x1 is the horizontal start of the line and must be <= x2.
-    /// @param y1 is the vertical start of the line and must be <= y2.
-    /// @param x2 is the horizontal end of the line and must be >= x1.
-    /// @param y2 is the vertical end of the line and must be >= y1.
-    /// @param radius1 defines the horizontal radius of the curved corner. Take care
+    /// @param[in] x1 is the horizontal start of the line and must be <= x2.
+    /// @param[in] y1 is the vertical start of the line and must be <= y2.
+    /// @param[in] x2 is the horizontal end of the line and must be >= x1.
+    /// @param[in] y2 is the vertical end of the line and must be >= y1.
+    /// @param[in] radius1 defines the horizontal radius of the curved corner. Take care
     ///         that this value < 1/2 the width of the rectangle, or bad_parameter 
     ///         is returned.
-    /// @param radius2 defines the vertical radius of the curved corner. Take care
+    /// @param[in] radius2 defines the vertical radius of the curved corner. Take care
     ///         that this value < 1/2 the height of the rectangle, or bad_parameter 
     ///         is returned.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] fillit is optional to FILL the rectangle. default is NOFILL.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t roundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -1021,14 +1021,14 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal for point 1.
-    /// @param y1 is the vertical for point 1. 
-    /// @param x2 is the horizontal for point 2.
-    /// @param y2 is the vertical for point 2.
-    /// @param x3 is the horizontal for point 3.
-    /// @param y3 is the vertical for point 3.
-    /// @param color defines the foreground color.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] x1 is the horizontal for point 1.
+    /// @param[in] y1 is the vertical for point 1. 
+    /// @param[in] x2 is the horizontal for point 2.
+    /// @param[in] y2 is the vertical for point 2.
+    /// @param[in] x3 is the horizontal for point 3.
+    /// @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 RetCode_t.
     ///
     RetCode_t triangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -1039,14 +1039,14 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x1 is the horizontal for point 1.
-    /// @param y1 is the vertical for point 1.
-    /// @param x2 is the horizontal for point 2.
-    /// @param y2 is the vertical for point 2.
-    /// @param x3 is the horizontal for point 3.
-    /// @param y3 is the vertical for point 3.
-    /// @param color defines the foreground color.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] x1 is the horizontal for point 1.
+    /// @param[in] y1 is the vertical for point 1.
+    /// @param[in] x2 is the horizontal for point 2.
+    /// @param[in] y2 is the vertical for point 2.
+    /// @param[in] x3 is the horizontal for point 3.
+    /// @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 RetCode_t.
     ///
     RetCode_t filltriangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -1056,13 +1056,13 @@
     ///
     /// Draws a triangle using the foreground color setting.
     ///
-    /// @param x1 is the horizontal for point 1.
-    /// @param y1 is the vertical for point 1.
-    /// @param x2 is the horizontal for point 2.
-    /// @param y2 is the vertical for point 2.
-    /// @param x3 is the horizontal for point 3.
-    /// @param y3 is the vertical for point 3.
-    /// @param fillit is optional to FILL the rectangle. default is NOFILL.
+    /// @param[in] x1 is the horizontal for point 1.
+    /// @param[in] y1 is the vertical for point 1.
+    /// @param[in] x2 is the horizontal for point 2.
+    /// @param[in] y2 is the vertical for point 2.
+    /// @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 RetCode_t.
     ///
     RetCode_t triangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2, 
@@ -1073,10 +1073,10 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x is the horizontal center of the circle.
-    /// @param y is the vertical center of the circle.
-    /// @param radius defines the size of the circle.
-    /// @param color defines the foreground color.
+    /// @param[in] x is the horizontal center of the circle.
+    /// @param[in] y is the vertical center of the circle.
+    /// @param[in] radius defines the size of the circle.
+    /// @param[in] color defines the foreground color.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t circle(loc_t x, loc_t y, dim_t radius, color_t color, fill_t fillit = NOFILL);
@@ -1086,10 +1086,10 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x is the horizontal center of the circle.
-    /// @param y is the vertical center of the circle.
-    /// @param radius defines the size of the circle.
-    /// @param color defines the foreground color.
+    /// @param[in] x is the horizontal center of the circle.
+    /// @param[in] y is the vertical center of the circle.
+    /// @param[in] radius defines the size of the circle.
+    /// @param[in] color defines the foreground color.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t fillcircle(loc_t x, loc_t y, dim_t radius, color_t color, fill_t fillit = FILL);
@@ -1098,9 +1098,9 @@
     ///
     /// Draws a circle using the foreground color setting.
     ///
-    /// @param x is the horizontal center of the circle.
-    /// @param y is the vertical center of the circle.
-    /// @param radius defines the size of the circle.
+    /// @param[in] x is the horizontal center of the circle.
+    /// @param[in] y is the vertical center of the circle.
+    /// @param[in] radius defines the size of the circle.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t circle(loc_t x, loc_t y, dim_t radius, fill_t fillit = NOFILL);
@@ -1110,12 +1110,12 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x is the horizontal center of the ellipse.
-    /// @param y is the vertical center of the ellipse.
-    /// @param radius1 defines the horizontal radius of the ellipse.
-    /// @param radius2 defines the vertical radius of the ellipse.
-    /// @param color defines the foreground color.
-    /// @param fillit defines whether the circle is filled or not.
+    /// @param[in] x is the horizontal center of the ellipse.
+    /// @param[in] y is the vertical center of the ellipse.
+    /// @param[in] radius1 defines the horizontal radius of the ellipse.
+    /// @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 RetCode_t.
     ///
     RetCode_t ellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, 
@@ -1126,12 +1126,12 @@
     /// @note As a side effect, this changes the current
     ///     foreground color for subsequent operations.
     ///
-    /// @param x is the horizontal center of the ellipse.
-    /// @param y is the vertical center of the ellipse.
-    /// @param radius1 defines the horizontal radius of the ellipse.
-    /// @param radius2 defines the vertical radius of the ellipse.
-    /// @param color defines the foreground color.
-    /// @param fillit defines whether the circle is filled or not.
+    /// @param[in] x is the horizontal center of the ellipse.
+    /// @param[in] y is the vertical center of the ellipse.
+    /// @param[in] radius1 defines the horizontal radius of the ellipse.
+    /// @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 RetCode_t.
     ///
     RetCode_t fillellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, 
@@ -1141,18 +1141,18 @@
     ///
     /// Draws it using the foreground color setting.
     ///
-    /// @param x is the horizontal center of the ellipse.
-    /// @param y is the vertical center of the ellipse.
-    /// @param radius1 defines the horizontal radius of the ellipse.
-    /// @param radius2 defines the vertical radius of the ellipse.
-    /// @param fillit defines whether the circle is filled or not.
+    /// @param[in] x is the horizontal center of the ellipse.
+    /// @param[in] y is the vertical center of the ellipse.
+    /// @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 RetCode_t.
     ///
     RetCode_t ellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, fill_t fillit = NOFILL);
     
     /// Control display power
     ///
-    /// @param on when set to true will turn on the display, when false it is turned off.
+    /// @param[in] on when set to true will turn on the display, when false it is turned off.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t Power(bool on);
@@ -1168,7 +1168,7 @@
     /// When the built-in PWM is used to control the backlight, this 
     /// API can be used to set the brightness.
     /// 
-    /// @param brightness ranges from 0 (off) to 255 (full on)
+    /// @param[in] brightness ranges from 0 (off) to 255 (full on)
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t Backlight_u8(unsigned char brightness);
@@ -1178,7 +1178,7 @@
     /// When the built-in PWM is used to control the backlight, this 
     /// API can be used to set the brightness.
     /// 
-    /// @param brightness ranges from 0.0 (off) to 1.0 (full on)
+    /// @param[in] brightness ranges from 0.0 (off) to 1.0 (full on)
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t Backlight(float brightness);
@@ -1189,7 +1189,7 @@
     ///     available at http://www.mikroe.com. 
     ///     Change the data to an array of type char[].
     ///
-    /// @param font is a pointer to a specially formed font array.
+    /// @param[in] font is a pointer to a specially formed font array.
     ///     This special font array has a 4-byte header, followed by 
     ///     the data:
     ///   - the number of bytes per char
@@ -1202,7 +1202,7 @@
 
     /// Get the RGB value for a DOS color.
     ///
-    /// @param i is the color, in the range 0 to 15;
+    /// @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.
     ///
@@ -1210,7 +1210,7 @@
 
     /// Get the color name (string) for a DOS color.
     ///
-    /// @param i is the color, in the range 0 to 15;
+    /// @param[in] i is the color, 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.
     /// 
@@ -1239,7 +1239,7 @@
     /// @see _StartGraphicsStream() is called, and it should be followed 
     /// by _EndGraphicsStream.
     ///
-    /// @param pixel is a color value to be put on the screen.
+    /// @param[in] pixel is a color value to be put on the screen.
     /// @returns error code.
     ///
     virtual RetCode_t _putp(color_t pixel);
@@ -1271,16 +1271,46 @@
     ///     will wait for the controller to finish the prior command.
     ///     In this case, the performance is limited by the RA8875.
     ///
-    /// @param Hz is the frequency in Hz, tested range includes the
+    /// @param[in] Hz is the frequency in Hz, tested range includes the
     ///     range from 1,000,000 (1MHz) to 10,000,000 (10 MHz). Values
     ///     outside this range will be accepted, but operation may
     ///     be unreliable.
-    /// @param Hz2 is an optional parameter and will set the read
+    /// @param[in] Hz2 is an optional parameter and will set the read
     ///     speed independently of the write speed.
     /// @returns success/failure code. @see RetCode_t.
     ///
     RetCode_t frequency(unsigned long Hz = RA8875_DEFAULT_SPI_FREQ, unsigned long Hz2 = 0);
     
+    /// This method captures the specified area as a 24-bit bitmap file.
+    ///
+    /// Even though this is a 16-bit display, the stored image is in
+    /// 24-bit format.
+    ///
+    /// @param[in] x is the left edge of the region to capture
+    /// @param[in] y is the top edge of the region to capture
+    /// @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.
+    ///
+    RetCode_t PrintScreen(loc_t x, loc_t y, dim_t w, dim_t h, const char *Name_BMP);
+    
+    /// This method captures the specified area as a 24-bit bitmap file,
+    /// including the option of layer selection.
+    ///
+    /// Even though this is a 16-bit display, the stored image is in
+    /// 24-bit format.
+    ///
+    /// @param[in] layer is 0 or 1 to select the layer to extract.
+    /// @param[in] x is the left edge of the region to capture
+    /// @param[in] y is the top edge of the region to capture
+    /// @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.
+    ///
+    RetCode_t PrintScreen(uint16_t layer, loc_t x, loc_t y, dim_t w, dim_t h, const char *Name_BMP);
+    
 
 #ifdef PERF_METRICS
     /// Clear the performance metrics to zero.
@@ -1288,14 +1318,14 @@
     
     /// Count idle time.
     ///
-    /// @param t is the amount of idle time to accumulate.
+    /// @param[in] t is the amount of idle time to accumulate.
     ///
     void CountIdleTime(uint32_t t);
     
     /// Report the performance metrics for drawing functions using
     /// the available serial channel.
     ///
-    /// @param pc is the serial channel to write to.
+    /// @param[in,out] pc is the serial channel to write to.
     ///
     void ReportPerformance(Serial & pc);
 #endif
@@ -1378,9 +1408,9 @@
     ///     are consistent with each other - see the RA8875 user
     ///     manual.
     ///
-    /// @param width in pixels to configure the display for.
-    /// @param height in pixels to configure the display for.
-    /// @param color_bpp can be either 8 or 16, but must be consistent
+    /// @param[in] width in pixels to configure the display for.
+    /// @param[in] height in pixels to configure the display for.
+    /// @param[in] color_bpp can be either 8 or 16, but must be consistent
     ///     with the width and height parameters.
     /// @returns success/failure code. @see RetCode_t.
     ///
@@ -1388,21 +1418,21 @@
     
     /// Internal function to put a character using the built-in (internal) font engine
     ///
-    /// @param is the character to put to the screen.
+    /// @param[in] is the character to put to the screen.
     /// @returns the character put.
     ///
     int _internal_putc(int c);
     
     /// Internal function to put a character using the external font engine
     ///
-    /// @param is the character to put to the screen.
+    /// @param[in] is the character to put to the screen.
     /// @returns the character put.
     ///
     int _external_putc(int c);
     
     /// Select the peripheral to use it.
     ///
-    /// @param chipsel when true will select the peripheral, and when false
+    /// @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 RetCode_t.
@@ -1411,7 +1441,7 @@
 
     /// Wait while the status register indicates the controller is busy.
     ///
-    /// @param mask is the mask of bits to monitor.
+    /// @param[in] mask is the mask of bits to monitor.
     /// @returns true if a normal exit.
     /// @returns false if a timeout exit.
     ///
@@ -1419,8 +1449,8 @@
 
     /// Wait while the the register anded with the mask is true.
     ///
-    /// @param reg is the register to monitor
-    /// @param mask is the bit mask to monitor
+    /// @param[in] reg is the register to monitor
+    /// @param[in] mask is the bit mask to monitor
     /// @returns true if it was a normal exit
     /// @returns false if it was a timeout that caused the exit.
     ///
@@ -1432,14 +1462,14 @@
     /// and the read speed for the SPI port to the RA8875, since
     /// it can accept writes faster than reads.
     ///
-    /// @param writeSpeed when true selects the write frequency,
+    /// @param[in] writeSpeed when true selects the write frequency,
     ///     and when false it selects the read frequency.
     ///
     void _setWriteSpeed(bool writeSpeed);
 
     /// The most primitive - to write a data value to the SPI interface.
     ///
-    /// @param data is the value to write.
+    /// @param[in] data is the value to write.
     /// @returns a value read from the port, since SPI is often shift
     ///     in while shifting out.
     ///
@@ -1515,8 +1545,8 @@
 /// stdin to switch from automatic test mode to manual, run a specific
 /// test, or to exit the test mode.
 ///
-/// @param lcd is a reference to the display class.
-/// @param pc is a reference to a serial interface, typically the USB to PC.
+/// @param[in] lcd is a reference to the display class.
+/// @param[in] pc is a reference to a serial interface, typically the USB to PC.
 ///
 void RunTestSet(RA8875 & lcd, Serial & pc);