Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TFTLCD by
Diff: hx8340bs.cpp
- Revision:
- 20:4bdca8d8dadc
- Parent:
- 15:af3cd35886fb
- Child:
- 22:4c169297f374
--- a/hx8340bs.cpp Thu Dec 13 03:37:22 2012 +0000 +++ b/hx8340bs.cpp Fri Dec 21 06:05:15 2012 +0000 @@ -177,7 +177,7 @@ serializeByte( data ); } -void HX8340S_LCD::SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ) +void HX8340S_LCD::SetXY( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2 ) { WriteCmdData( 0x2A, x1 ); // CASET WriteData( x2 ); @@ -186,22 +186,56 @@ WriteCmd( 0x2C ); // RAMWR } -void HX8340S_LCD::SetPixelColor( unsigned int color ) +void HX8340S_LCD::SetPixelColor( unsigned int color, colordepth_t mode ) { - unsigned char r, g, b; - r = ( color >> 16 ) & 0xFF; - g = ( color >> 8 ) & 0xFF; - b = color & 0xFF; + unsigned char r = 0, g = 0, b = 0; + unsigned short clr; if ( _colorDepth == RGB16 ) { - unsigned short clr = ( ( ( ( r ) & 0xF8 ) | ( ( g ) >> 5 ) ) << 8 ) | ( ( ( ( g ) & 0x1C ) << 3 ) | ( ( b ) >> 3 ) ); - WriteData( clr ); + switch ( mode ) + { + case RGB16: + WriteData( color & 0xFFFF ); + break; + case RGB18: + r = ( color >> 10 ) & 0xF8; + g = ( color >> 4 ) & 0xFC; + b = ( color >> 1 ) & 0x1F; + clr = ( ( r | ( g >> 5 ) ) << 8 ) | ( ( g << 3 ) | b ); + WriteData( clr ); + break; + case RGB24: + r = ( color >> 16 ) & 0xF8; + g = ( color >> 8 ) & 0xFC; + b = color & 0xF8; + clr = ( ( r | ( g >> 5 ) ) << 8 ) | ( ( g << 3 ) | ( b >> 3 ) ); + WriteData( clr ); + break; + } } else if ( _colorDepth == RGB18 ) { - WriteByteData( r & 0xFC ); - WriteByteData( g & 0xFC ); - WriteByteData( b & 0xFC ); + switch ( mode ) + { + case RGB16: + r = ( ( color >> 8 ) & 0xF8 ) | ( ( color & 0x8000 ) >> 13 ); + g = ( color >> 3 ) & 0xFC; + b = ( ( color << 3 ) & 0xFC ) | ( ( color >> 3 ) & 0x01 ); + break; + case RGB18: + b = ( color << 2 ) & 0xFC; + g = ( color >> 4 ) & 0xFC; + r = ( color >> 10 ) & 0xFC; + break; + case RGB24: + r = ( color >> 16 ) & 0xFC; + g = ( color >> 8 ) & 0xFC; + b = color & 0xFC; + break; + } + WriteByteData( r ); + WriteByteData( g ); + WriteByteData( b ); } }