Forked para SNOCC
Fork of RA8875 by
Diff: RA8875.h
- Revision:
- 41:2956a0a221e5
- Parent:
- 40:04aa280dfa39
- Child:
- 43:3becae133285
--- a/RA8875.h Tue Feb 04 02:58:06 2014 +0000 +++ b/RA8875.h Sat Feb 08 17:35:45 2014 +0000 @@ -4,7 +4,7 @@ #include "GraphicsDisplay.h" -#define RA8875_DEFAULT_SPI_FREQ 2000000 +#define RA8875_DEFAULT_SPI_FREQ 5000000 // Define this to enable code that monitors the performance of various // graphics commands. @@ -181,7 +181,7 @@ /// unsigned char ReadCommand(unsigned char command); - /// Read a data byte to the display + /// Read a data byte from the display /// /// This is a high level command, and may invoke several primitives. /// @@ -189,6 +189,14 @@ /// unsigned char ReadData(void); + /// Read a word from the display + /// + /// This is a high level command, and may invoke several primitives. + /// + /// @returns data that was read. + /// + uint16_t ReadDataW(void); + /// Read the display status /// /// This is a high level command, and may invoke several primitives. @@ -379,6 +387,15 @@ /// virtual RetCode_t SetGraphicsCursor(loc_t x, loc_t y); + /// 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) + /// @returns success/failure code. @see RetCode_t. + /// + virtual RetCode_t SetGraphicsCursorRead(loc_t x, loc_t y); + /// Set the window, which controls where items are written to the screen. /// /// When something hits the window width, it wraps back to the left side @@ -453,8 +470,8 @@ /// Draw a pixel in the specified color. /// - /// @note As a side effect, this also sets the foreground - /// color affecting all subsequent operations. + /// @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. @@ -471,6 +488,34 @@ /// 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. + /// @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. + /// @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. + /// @returns success/failure code. @see RetCode_t. + /// + virtual RetCode_t getPixelStream(color_t * p, uint32_t count, loc_t x, loc_t y); + /// Draw a line in the specified color /// /// @note As a side effect, this changes the current @@ -827,8 +872,11 @@ void ClearPerformance(); /// Report the performance metrics for drawing functions using - /// printf() - void ReportPerformance(); + /// the available serial channel. + /// + /// @param pc is the serial channel to write to. + /// + void ReportPerformance(Serial & pc); #endif private: @@ -947,7 +995,10 @@ typedef enum { PRF_CLS, - PRF_DRAWPOINT, + PRF_DRAWPIXEL, + PRF_PIXELSTREAM, + PRF_READPIXEL, + PRF_READPIXELSTREAM, PRF_DRAWLINE, PRF_DRAWRECTANGLE, PRF_DRAWROUNDEDRECTANGLE,